【问题标题】:SOLR relevance multiple terms querySOLR相关性多词查询
【发布时间】: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

标签: solr relevance edismax


【解决方案1】:

您使用的是 SOLR 4.7 版本,我在 solr 7.0 版本上进行了相同的尝试,并且它的工作方式与您想要的完全相同。

http://localhost:8983/solr/burrp/select?fl=*,score&q=name:yellow%20tree%20house

响应是:

{
 responseHeader: {
 status: 0,
 QTime: 0,
 params: {
 q: "name:yellow tree house",
 fl: "*,score",
 },
},
response: {
numFound: 2,
start: 0,
maxScore: 1.6810184,
docs: [
 {
  id: "2",
  name: "yellow tree",
  sname: "yellow tree",
  _version_: 1597543998903287800,
  score: 1.6810184,
},
{
 id: "1",
 name: " house house house house house  ",
 sname: " house house house house house  ",
 _version_: 1597543972785356800,
 score: 1.1577512,
},
],
},

您可以在 solr 7 版本上进行检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-28
    • 2011-02-28
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    相关资源
    最近更新 更多