1. BM25
BM25: best matching 25
使用场景:elasticsearch 和 lucene 5之后默认的匹配得分算法。
在创建 index mapping 的时候,可以在 setting 中指定 bm25 算法,并声明算法中k 和 b 的参数值。
"settings": {
"similarity": {
"similarity_halfh": {
"type": "BM25",
"k1": 1.2,
"b": 0.2
}
}
},
...
}
2. BM25 和 TF/IDF 的区别
当某个词出现的频率越来越高时,TF的得分无限增大,而BM25计算出来的得分会稳定在一个值。
3. 公式
k 默认值是1.2, 数值越小,饱和度越高,b 的默认值是0.75(0-1),0 代表禁止 Normalization。