是否可以提高 Solr 中的布尔字段以便获得更高的分数?
我们有一个索引,看起来有点像这样:
- 文档ID
- title
- 描述
- keywords
- 已审阅
搜索时,已审阅的文档(即 is_reviewed = true)的权重应高于未审阅的文档,而不是完全排除它们。
Using is_review:true^100
似乎不起作用,并排除未经审查的项目,而不是仅仅给予它们较低的权重。如果有不同的方式可以实现这一点吗?谢谢!
一些查询解析器有专门用于这种用途的功能。例如,dismax 查询解析器有一个增强查询bq http://wiki.apache.org/solr/DisMaxQParserPlugin#bq_.28Boost_Query.29它允许您通过将子句添加到原始查询来增强与查询匹配的文档。还有一个升压功能bf http://wiki.apache.org/solr/DisMaxQParserPlugin#bf_.28Boost_Functions.29它允许您将分数乘以函数的结果。例如,使用is_review
作为这个bf
范围,
- 每个文档的得分
is_review
未定义的字段将乘以 0。
- 每个文档的分数,以便
is_review
=false
将乘以一。
- 每个文档的分数以便
is_review
=true
将乘以二。
is_review:true^100
不应排除未审核的项目,除非您正在使用AND
as the 默认查询运算符 http://wiki.apache.org/solr/SchemaXml#Default_query_parser_operator。在这种情况下,您可以尝试更换is_review:true^100
by (is_review:true^100 OR is_review:false^0)
.
如果您对 dismax 查询解析器的 boost 功能感兴趣,但想坚持使用默认查询解析器,您可以使用增强查询解析器 http://lucene.apache.org/solr/api/org/apache/solr/search/BoostQParserPlugin.html这将允许您将任何查询的分数与任何函数相乘。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)