我的文件是典型的电子商务目录产品,比方说足球鞋 .
这是一个字段子集:
-
id
-
Headers
-
说明
-
sold_units(整数)
-
available_units(整数)
-
new(布尔值)
我现在的排序标准是: new desc, sold_units desc, available_units desc
.
我想展示“新”产品,然后是畅销产品,然后是最高库存产品 .
这有效,但使用'sort'参数,文本相关性(得分)完全丢失 . 我得到新产品,畅销书......绝对不满足我的搜索查询 .
(例如,我搜索'Nike Mercurial',并获得'Nike Hypervenom'产品作为第一批结果,因为它们是畅销书)
我正在寻找一种方法来“结合”Solr搜索得分和排序字段 .
我认为这是一个“提升”的问题,不是吗?我的意思是 Build 一个函数(score,new,sold_units)作为参数并用它来进行排序 .
你有任何建议可以帮助我,或者至少有关于如何进行的想法吗?谢谢
--- EDIT ---
我相信提升是解决方案 .
我/ select搜索处理程序默认使用edismax解析器,因此我的boost字段可以完成工作:
boost=sum(1,product(1,sold_units))
如果我需要在MULTIPLE字段上进行提升(布尔值'new'),该怎么办?
1 回答
sum
将采用多个参数 . 开始将加速模型建模为加权产品的总和可能会有所帮助 . 例如:boost = Ax By Cz其中(x,y,z)=(新的,已售出的,可用的),A,B和C是您推断的常数,可以根据您的相关性定义适当地加权这些特征 .应用于edismax查询的
boost
函数只需乘以文本匹配分数即可生成排名结果中使用的最终分数 . 因此,当提出你的助推功能时,目标通常是“巧妙地”(不显着)影响已经相当接近的文本匹配分数 .您还可以查看Quepid.com等工具,以帮助您评估最常见查询的更改结果 .