代码之家  ›  专栏  ›  技术社区  ›  Fabio B.

如何在Solr中排序/增强产品搜索结果

  •  1
  • Fabio B.  · 技术社区  · 6 年前

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

    以下是字段子集:

    • id号
    • 标题
    • 描述
    • 销售单位(整数)
    • 可用\u单位(整数)
    • 新建(布尔)

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

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

    这是可行的,但使用“sort”参数,文本相关性(score)就会完全丧失。我有新产品、畅销书。。。。绝对不能满足我的搜索查询。

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

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

    我认为这是一个“促进”的问题,不是吗?我的意思是构建一个以(score、new、seld\u单位)为参数的函数,并使用它进行排序。

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

    ---编辑---

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

    默认情况下,我的/选择搜索处理程序使用edismax解析器,因此我的boost字段可以完成任务:

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

    如果我需要在多个字段上进行boosting(布尔值也是“new”)该怎么办?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Peter Dixon-Moses    6 年前

    sum 将接受多个参数。首先,将你的激励建模为加权乘积的总和可能会有所帮助。例如:boost=Ax+By+Cz,其中(x,y,z)=(新的,售出的,可用的),A,B和C是您推断的常数,可以根据您的相关性定义对这些特征进行适当的加权。

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

    你也可以看看像Quepid这样的工具。com来帮助您评估更改的结果,以用于热门查询。