首先从评分角度看,哪些因素会最终影响了评分呢?下面是对Lucene官方文档给出的TFIDFSimlarity相似度评分公式:
-
doc_freq表示搜索关键词term出现在多少个文档中
-
doc_count表示整个Segment的总文档个数
-
frequency(t,d)表示词条t在文档d中出现频次 norm(t,d)表示词条t在文档d归一化因子 其中这两个函
-
norm(t,d)和frequency(t,d)的值与本文中的上下文均用norm和freq表示。
由此可见,其中只有norm(t,d)
和frequency(t,d)
是随文档变化的,其它参数都在segment内确定不变的固定值。也可以理解为,在一个Segment范围内,freq和norm值直接决定了一个文档的得分排序。
https://lucene.apache.org/core/7_4_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html