I got the debug info like this. It turns out that queryNorm is negative so the total solr score is negative too. It is not really a problem for me. But I'm curious why it can even be negative after reading its definition (1/sumOfSquaredWeights)?
-1.1151254E-4 = (MATCH) product of: -0.0032338637 = (MATCH) sum of: -0.0032338637 = (MATCH) product of: -0.022637045 = (MATCH) sum of: -0.022637045 = (MATCH) weight(description_t:new in 171) [DefaultSimilarity], result of: -0.022637045 = score(doc=171,freq=1.0), product of: -0.08188456 = queryWeight, product of: 3.538569 = idf(docFreq=129, maxDocs=1646) -0.023140587 = queryNorm 0.2764507 = fieldWeight in 171, product of: 1.0 = tf(freq=1.0), with freq of: 1.0 = termFreq=1.0 3.538569 = idf(docFreq=129, maxDocs=1646) 0.078125 = fieldNorm(doc=171) 0.14285715 = coord(1/7) 0.03448276 = coord(1/29)