如何正确提升 Solr Dismax 查询中的结果
题
我成功地在 Solr 中构建了一个索引,我可以在其中搜索关键字、生成构面、查询构面等。这一切都很好。我已经使用 dismax 查询实现了搜索,因此它搜索预定字段。
但是,我的结果返回时按分数排序,该分数似乎仅按关键字相关性计算。我想调整字段具有预定值的分数。我想我可以使用 boost 查询和 boost 函数来做到这一点,但这里的文档:
http://wiki.apache.org/solr/DisMaxRequestHandler#head-6862070cf279d9a09bdab971309135c7aea22fb3
不是特别有帮助。我尝试在搜索中添加 bq 参数:
&bq=media:DVD^2
(是的,这是电影索引!)但我发现当我开始添加越来越多的内容时:
&bq=media:DVD^2&bq=media:BLU-RAY^1.5
我发现负面结果 - 例如电影是 DVD 但 不是 蓝光的分数受到负面影响。最后,一切似乎都趋于平衡,我的分数与我开始提升之前一样。
我一定做错了,我想知道“升压功能”是否出现在某个地方。关于如何正确使用 boost 有什么想法吗?
解决方案 2
显然,这对于 DVD 但非蓝光电影的得分受到负面影响是正常的。这是因为添加的约束越多,queryNorm 值就越减少 - 并且所有分数都乘以该值。
其他提示
这有点晚了,看起来你可能已经拥有了你想要的东西,但是......
如果您对boost 函数感到好奇(根据您希望的结果判断,我认为您应该这样做),您应该查看bf
参数而不是bq
参数。
尝试将bf参数设置为
media:DVD^2 media:BLU-RAY^1.5
我认为这可以达到你想要的效果。
听起来你需要在索引时而不是查询时应用提升。因此,当您准备要添加到索引中的文档时,请将那些DVD提升为2,将Blu-Ray提升为1.5。
不隶属于 StackOverflow