【问题标题】:How to sort / boost product search results in Solr如何在 Solr 中对产品搜索结果进行排序/提升
【发布时间】:2018-09-08 06:18:07
【问题描述】:

我的文档是典型的电子商务目录产品,比如足球鞋。

这是一个字段子集:

  • 身份证
  • 标题
  • 说明
  • sold_units (整数)
  • available_units(整数)
  • 新的(布尔值)

我现在的排序标准是:new desc, sold_units desc, available_units desc

我想先展示“新”产品,然后是畅销产品,然后是库存最高的产品。

这行得通,但使用“排序”参数,文本相关性(分数)完全丢失。我得到了新产品,畅销书......绝对不能满足我的搜索查询。

(例如,我搜索“Nike Mercurial”,并获得“Nike Hypervenom”产品作为第一个结果,因为它们是畅销产品)

我正在寻找一种将 Solr 搜索分数与排序字段“组合”的方法。

我认为这是一个“提升”问题,不是吗?我的意思是构建一个以 (score, new, sold_units) 作为参数的函数并将其用于排序。

您有什么建议可以帮助我,或者至少对如何进行有什么想法吗? 谢谢

--- 编辑---

我确实相信提升是解决方案。

我的 /select 搜索处理程序默认使用 edismax 解析器,所以我的 boost 字段可以完成工作:

boost=sum(1,product(1,sold_units))

如果我需要提升 MULTIPLE 字段(布尔值“新”也是如此)怎么办?

【问题讨论】:

    标签: search solr lucene full-text-search


    【解决方案1】:

    sum 将接受多个参数。开始将您的提升建模为加权产品的总和可能会有所帮助。例如: boost = Ax + By + Cz 其中 (x,y,z) = (new,sold,available) 其中 A、B 和 C 是您推断出的常数,以根据您的相关性定义适当地加权这些特征。

    您的 boost 函数应用于 edismax 查询,只需乘以文本匹配分数即可生成用于排名结果的最终分数。因此,当提出你的提升功能时,目标通常是“微妙地”(不是显着地)影响已经相当接近的文本匹配分数。

    您还可以查看 Quepid.com 之类的工具,以帮助您评估针对热门查询所做更改的结果。

    【讨论】:

    • 谢谢。我最终使用了 sum(product(10,sold_i),product(1,available_i))new_b desc,score desc我的搜索处理程序。
    • 我知道这太旧了,但你能分享你的 solr 查询吗?我也有什么相同的东西
    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多