1. ElasticSearch6 评分机制
1.1. IDF
1 | IDF = ln(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) |
docCount:总文档数(在分片数=1的情况下是这样)
- What does “docCount” mean in the Explain API?
- What does “docCount” and “docFreq” mean in the Explain API?
docFreq:满足本条term的查询文档数目(当前term召回的文档数)
IDF反映的是term的影响因子,如果docCount很大,docFreq很小,标示该term在doc之间具有很好的分辨力,当然IDF值也就越大
1.2. tfNorm
1 | (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)) |
freq: 当前term在当前doc的field中出现的次数
k1: 调优参数,默认为1.2
b: 调优参数,默认为0.75
fieldLength: 当前doc的field长度
avgFieldLength: 所有文档的field平均长度
tfNorm反映的该term在所有满足条件的doc中field中的重要性,一般来说,相同的freq下,field的长度越短,那么取值就越高
1.3. BM25
