Lucene的打分公式非常复杂,如下:
coord(q,d):此项表示,当一篇 文档(document) 中包含的搜索词(query terms)越多,则此文档则打分越高。
queryNorm(q):此值并不影响排序,而仅仅使得不同的query之间的分数可以比较。其公式如下:
t in q: Term t
tf(t in d):Term t在文档d中出现的词频(次数)
idf(t):Term t在几篇文档中出现过
norm(t, d):标准化因子,它包括三个参数:Document boost。Field boost。lengthNorm(field) = (1.0 / Math.sqrt(numTerms)):一个域中包含的Term总数越多,也即文档越长,此值越小,文档越短,此值越大。
ps: norm(t,d )中的 Term t 好像没有直接参与。