我成功地在 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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top