在我的Rails应用程序中,我有一个问题模型,使用sunspot solr设置,带有字段“text”,我想在该字段中搜索字之间的逻辑OR。我发现将minimum_match设置为1可以解决我的问题,但是我也希望通过提升超过1个单词匹配的问题来排序结果。 Solr有办法做到这一点吗?该文档对排名函数没有实际帮助。
编辑:这是我在控制器中执行的完整查询
@questions = Question.solr_search do
fulltext params[:query], :minimum_match => 1
end.results
答案 0 :(得分:1)
根据http://wiki.apache.org/solr/SchemaXml,
Solr的查询解析器(SolrQueryParser)使用的默认运算符可以 配置
<solrQueryParser defaultOperator="AND|OR"/>.
如果未指定,则默认运算符为“OR”。最好不要使用 或依赖此设置;而是请求处理程序或查询 LocalParams应指定默认运算符。这个设置可以 被省略,正在考虑弃用。
您可以在solr / conf / schema.xml中更改defaultOperator,也可以使用LocalParams通过https://github.com/sunspot/sunspot/wiki/Building-queries-by-hand
等语法指定OR真正的太阳黑子的默认运算符是“AND”,如https://github.com/sunspot/sunspot/blob/master/sunspot_solr/solr/solr/conf/schema.xml
中所引用的那样答案 1 :(得分:0)
逻辑OR是太阳黑子中使用的Dismax请求处理程序的默认行为。
另外,单词越匹配,文档得分越高(听起来就像你想要的那样)
Question.search do
fulltext 'best pizza'
end
...应返回与一个或两个单词匹配的结果(返回与两个单词匹配的单词):
minimum_match
仅在您希望过滤掉低相关性结果(其中只有一定数量或百分比的术语实际匹配)时才有用。这不会影响评分或逻辑OR / AND行为。