是否有可能提振Solr的布尔字段,以便他们获得更高的分数?
我们已经有了这看起来有点像这样的指标:
- DOCUMENT_ID
- 标题
- 描述
- 关键字
- is_reviewed
在搜索时,已审查的文件(即is_reviewed =真)应该比那些都没有,而不是完全排除他们更大的权重。
使用is_review:true^100
似乎并没有工作,排除了未经审核的项目,而不是仅仅给他们一个较低的权重。 如果有不同的方法可以做到这一点? 谢谢!
是否有可能提振Solr的布尔字段,以便他们获得更高的分数?
我们已经有了这看起来有点像这样的指标:
在搜索时,已审查的文件(即is_reviewed =真)应该比那些都没有,而不是完全排除他们更大的权重。
使用is_review:true^100
似乎并没有工作,排除了未经审核的项目,而不是仅仅给他们一个较低的权重。 如果有不同的方法可以做到这一点? 谢谢!
有些查询分析器有一个专门的这种用法的功能。 例如,dismax查询分析器具有升压查询bq
它允许你以提高匹配将其条款对原始查询的查询哪些文件。 还有一个升压功能bf
,它允许您通过一个函数的结果乘以分数。 例如,使用is_review
因为这bf
参数,
is_review
字段未定义将由0相乘。 is_review
= false
将由一个相乘。 is_review
= true
将乘以2。 is_review:true^100
不应该,除非你使用排除非审查项目AND
为默认查询操作 。 在这种情况下,你可以尝试更换is_review:true^100
的(is_review:true^100 OR is_review:false^0)
如果你有兴趣在dismax查询分析器的增强功能,但想坚持到默认的查询分析器,您可以使用升压查询分析器 ,这将让你与任何函数乘以任何查询的分数。
这里是为那些使用Drupal的CMS是谁的解决方案。
首先,在/solr/admin/schema.jsp找到在架构浏览器的字段名
然后,根据您所使用的模块上,试试下面的例子:
代码示例:
/**
* Implements hook_apachesolr_query_alter().
*/
function hook_apachesolr_query_alter(DrupalSolrQueryInterface $query) {
$query->addParam('bq', array('is_review' =>
'(is_review:true^100 OR is_review:false^0)'
));
}
代码示例:
/**
* Implements hook_search_api_solr_query_alter().
*/
function hook_search_api_solr_query_alter(&$call_args, SearchApiQueryInterface $query) {
$call_args['params']['bq'][] = '(is_review:true^100 OR is_review:false^0)';
}