首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr中的Boosting布尔字段

Solr中的Boosting布尔字段
EN

Stack Overflow用户
提问于 2012-04-11 20:07:50
回答 2查看 4.1K关注 0票数 9

是否有可能在Solr中提升布尔字段以使它们获得更高的分数?

我们有一个看起来有点像这样的索引:

  • document_id
  • 标题
  • 描述
  • 关键词
  • is_reviewed

在搜索时,已被审查的文件(如。is_reviewed = true)应该比尚未加权的权重更重,而不是完全排除它们。

使用is_review:true^100似乎不起作用,它排除了未经评审的项目,而不只是赋予它们更低的权重。如果有不同的方法可以实现这一点呢?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 21:30:02

一些查询解析器具有专门用于此类使用的特性。例如,dismax查询解析器有一个bq,它允许将匹配查询的文档添加到原始查询中。还有一个bf,它允许你把分数乘以一个函数的结果。例如,使用is_review作为bf参数,

  • is_review字段未定义的每个文档的得分将乘以0。
  • 每个文档的分数,因此is_review=false将乘以1。
  • 每个文档的分数,因此is_review=true将乘以2。

is_review:true^100不应排除未评审的项,除非您使用AND作为默认查询运算符。在这种情况下,您可以尝试用is_review:true^100替换(is_review:true^100 OR is_review:false^0)

如果您对dismax查询解析器的boost特性感兴趣,但希望坚持默认的查询解析器,则可以使用boost查询解析器将任何查询的分数与任何函数相乘。

票数 10
EN

Stack Overflow用户

发布于 2013-01-14 17:16:59

德鲁帕尔

以下是那些使用Drupal的人的解决方案。

首先,在架构浏览器/solr/admin/schema.jsp中找到您的字段名。

然后,根据您使用的模块,尝试以下示例:

Apachesolr模

代码示例:

代码语言:javascript
复制
/**
 * 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)'
  ));
}

搜索Solr模块

代码示例:

代码语言:javascript
复制
/**
 * 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)';
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10113144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档