如何在 Solr 中排序/提升产品搜索结果

How to sort / boost product search results in Solr

我的文档是典型的 e-commerce 目录产品,比方说足球鞋。

这是一个字段子集:

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

我想先显示 "new" 个产品,然后 best-sellers,然后是库存最高的产品。

有效,但使用 'sort' 参数,文本相关性(分数)完全丢失。我得到了新产品,best-sellers...绝对不能满足我的搜索查询。

(例如,我搜索 'Nike Mercurial',第一个结果是 'Nike Hypervenom' 产品,因为它们是 best-sellers)

我正在寻找一种 "combine" Solr 搜索分数排序字段的方法。

我认为这是 "boost" 的事情,不是吗?我的意思是构建一个以 (score, new, sold_units) 作为参数的函数并将其用于排序。

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

--- 编辑 ---

我相信提升是解决方案。

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

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

如果我需要对多个字段进行提升(布尔值 'new')怎么办?

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

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

您还可以查看 Quepid.com 等工具来帮助您评估对热门查询的更改结果。