【问题标题】:Solr Lucene - boost relevancy based on a 0 to 5 star rating?Solr Lucene - 基于 0 到 5 星评级提高相关性?
【发布时间】:2011-02-02 11:54:17
【问题描述】:

Solr 1.4 相当新 - 似乎确实非常强大。但是,当我尝试按相关性(分数)和 rating_value(每个结果的 0 到 5 星评级)的顺序返回搜索结果时,我被卡住了。

我尝试通过“评分 desc,分数 desc”对搜索结果进行排序,虽然这可行,但感觉有点基本。

我最终希望根据它被评为多少星(0 到 5)来提高搜索结果的相关性。因此,一个 5 星的结果应该会带来最大的提升。

我确实尝试添加 'rating_value:1^0.1 rating_value:2^0.2' 等,但这似乎大大提高了没有关键字匹配但确实有高星级的答案。

非常感谢任何帮助! 谢谢,塞布

【问题讨论】:

    标签: lucene solr rating


    【解决方案1】:

    添加带有提升值的“rating_value”条款,您走在了正确的轨道上。但是,请确保在构建查询时,关键字词是“必须”词,这将要求文档包含该词才能返回。

    从那里您可以使用每个术语的相对提升值。如果评分提升太高,您可以给关键字更多的提升,反之亦然。重要的是要知道提升的绝对值在各个字段之间是不可比较的,即给关键字提升 20 和 rating_value 提升 19 并不意味着关键词会得到更多提升,主要是因为长度标准化。有关详细信息,请参阅 Lucene 的相似性。

    【讨论】:

    • 啊,是的,我明白了。我的问题是返回的结果没有查询关键字匹配;显示它们只是因为它们有评级。我将如何使用我的查询管理您对“必须”条款的建议? "q=foo rating_value:1^0.1 rating_value:2^0.2"
    • @seb835:加号表示它是必需的。所以你的应该是q=+foo rating_value:1^.01 rating_value:2^.02
    • 是的,这就是答案。我的查询现在如下: q=+(foo bar nar) rating_value:1^0.1 ...问题解决了!非常感谢大家。
    【解决方案2】:

    如果您使用的是 DISMAX 请求处理程序,您还应该考虑使用 bq(提升查询)字段进行提升,因为这种提升只影响用户查询已经匹配的文档。

    您可以在请求处理程序中的 solrconfig.xml 中预定义 bq 字段,例如

    <str name="bq">
      rating_value:1^0.1 rating_value:2^0.2
    </str>
    

    【讨论】:

      猜你喜欢
      • 2013-10-04
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2011-04-04
      • 2017-08-25
      相关资源
      最近更新 更多