如何在 Solr 中排序/提升产品搜索结果
How to sort / boost product search results in Solr
我的文档是典型的 e-commerce 目录产品,比方说足球鞋。
这是一个字段子集:
- id
- 标题
- 描述
- sold_units(整数)
- available_units(整数)
- 新(布尔值)
我现在的排序标准是: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 等工具来帮助您评估对热门查询的更改结果。
我的文档是典型的 e-commerce 目录产品,比方说足球鞋。
这是一个字段子集:
- id
- 标题
- 描述
- sold_units(整数)
- available_units(整数)
- 新(布尔值)
我现在的排序标准是: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 等工具来帮助您评估对热门查询的更改结果。