elasticsearch - BM25 是否使用查询协调器?
问题描述
在 Lucene 的实际评分功能中,有一个查询协调器,它惩罚不匹配所有查询词的文档。Okapi BM25 使用相同的技巧吗?
我对此感到好奇的原因是我正在使用带有 BM25 相似性模块的 Elasticsearch,有时我觉得这个算法不喜欢匹配更多的文档。在某些情况下,一个文档包含一个或两个术语很多,胜过包含所有查询术语的文档。
解决方案
是和不是。
不,它不使用旧 Lucene 默认相似度所描述的坐标因子(注意:Lucene 核心现在默认也使用 BM25)。
是的,它确实比对同一术语的一堆命中更重视对更多查询术语的命中。它以更好的术语饱和度来做到这一点,使旧的坐标因子有效地过时了。
然而,使用任一算法,在较少条件下的许多命中总是有可能超过在较多条件下的少数命中。