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

时间:2018-03-29 10:18:26

标签: search solr lucene full-text-search

我的文件是典型的电子商务目录产品,让我们说足球鞋。

这是一个字段子集:

  • ID
  • 标题
  • description
  • sold_units(整数)
  • available_units(整数)
  • new(boolean)

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

我想展示" new"产品第一,然后是畅销产品,然后是最高库存产品。

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

(例如,我搜索' Nike Mercurial',并获得Nike Hypervenom'产品作为第一批结果,因为他们是最畅销的产品)

我正在寻找一种方法来结合"使用排序字段的Solr搜索分数。

我认为这是一个"提升"问题,不是吗?我的意思是建立一个函数(score,new,sold_units)作为参数并用它来进行排序。

您有什么建议可以帮助我,或者至少有关于如何进行的建议吗? 感谢

---编辑---

我相信提升是解决方案。

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

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

如果我需要在MULTIPLE字段上进行提升(布尔' new'也是如此),该怎么办?

1 个答案:

答案 0 :(得分:2)

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

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

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