【发布时间】:2018-09-19 16:41:31
【问题描述】:
我有以下查询要在 SOLR 4.7 中执行
query=yellow tree house
而doc1和doc2如下
doc1=house house house house house
doc2=yellow tree
在默认的 SOLR 实现中,doc1 将排在第一位,因为术语 house 重复了很多次,并且它的 tfidf 会更高。
另一方面,我需要将 doc2 而不是 doc1 列为第一个结果,因为三个查询词中至少两个同时出现比一个词出现多次要好。
如何调整 SOLR 来执行它? BM25 能否解决这个问题?
【问题讨论】:
-
关于 SOLR 分数定制,这个 SO 答案应该可以帮助你:stackoverflow.com/a/22027652/9480229
-
BM25 应该减少文档中大量相同术语的影响,但我不确定这是否是您需要的,因为您想取消文档中的
TF. -
谢谢,自定义评分功能似乎很复杂。我尝试了简单的解决方案,例如设置 mm 参数,但没有成功。
-
我会尝试查询的子集,例如“黄色树屋”^10 或“黄色树”^5 或“树屋”^5 但应该有更简单的东西,因为我的要求是非常基本。我不一定要取消 tf,但要降低它的重要性 wrt 多词 cococurence。
-
这种查询的问题在于它非常具体。但是如果你真的希望黄色得分高于房子(例如),如果你不想实现任何分数自定义,你确实可以这样做:
yellow^10 OR house^5