Solr最低匹配结果排名



在我的Rails应用程序中,我有一个问题模型,使用太阳黑子solr设置,带有字段"文本",我想在该字段中搜索单词之间的逻辑OR。我发现将 minimum_match 设置为 1 可以解决我的问题,但是我还想通过提升具有多个单词匹配的问题来对结果进行排序。有没有办法用Solr做到这一点?该文档对函数的排名并没有真正的帮助。

编辑:这是我在控制器中执行的完整查询

@questions = Question.solr_search do
  fulltext params[:query], :minimum_match => 1
end.results

根据 http://wiki.apache.org/solr/SchemaXml,

Solr

的查询解析器(SolrQueryParser(使用的默认运算符可以 配置有

<solrQueryParser defaultOperator="AND|OR"/>. 

如果未指定,则默认运算符为"OR"。最好不要使用 或依赖此设置;而是请求处理程序或查询 LocalParams 应指定默认运算符。此处的此设置可以 被省略,它正在考虑弃用。

您可以在 solr/conf/schema 中更改 defaultOperator.xml也可以使用 LocalParams 通过语法指定 OR,例如 https://github.com/sunspot/sunspot/wiki/Building-queries-by-hand

确实,太阳黑子的默认运算符是"AND",如 https://github.com/sunspot/sunspot/blob/master/sunspot_solr/solr/solr/conf/schema.xml

逻辑 OR 是 Sunspot 中使用的 Dismax 请求处理程序的默认行为。

另外,匹配的单词越多,文档的分数就越高(这听起来像您想要的(

Question.search do
  fulltext 'best pizza'
end

。应返回与一个或两个单词匹配的结果(首先返回与两个单词匹配的结果(:

  1. "乔的披萨是纽约市最好的披萨">
  2. "很难说哪个披萨店最好">
  3. ">披萨不是最适合你的食物">
  4. "我不在乎披萨对你不好!">
  5. "你认为最好的快餐是什么?">

仅当您想要过滤掉低相关性结果(实际匹配的术语数量或百分比较低(时,minimum_match才有用。 这不会影响评分或逻辑 OR/AND 行为。

最新更新