【问题标题】:Solr minimum match results rankingSolr 最小匹配结果排名
【发布时间】:2012-05-23 10:12:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: solr sunspot sunspot-rails


    【解决方案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

    确实,Sunspot 的默认运算符是“AND”,如 https://github.com/sunspot/sunspot/blob/master/sunspot_solr/solr/solr/conf/schema.xml 中引用的那样

    【讨论】:

      【解决方案2】:

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

      另外,匹配的单词越多,文档的分数就越高(听起来就像你想要的那样)

      Question.search do
        fulltext 'best pizza'
      end
      

      ...应该返回匹配一个或两个单词的结果(返回首先匹配两个单词的结果):

      1. “Joe's 有纽约市最好的披萨
      2. “很难说哪个pizza地方是最好的
      3. 披萨对你来说不是最好的食物”
      4. “我不在乎 pizza 是否对你有害!”
      5. “您认为最好的快餐是什么?”

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

      【讨论】:

      • 根据我的经验并在最小匹配段落中注意到herehere,搜索的默认行为是单词之间的逻辑与。此外,我正在使用这种过滤器&lt;filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="15"/&gt; 处理我不知道是否会导致与默认行为不同的文本字段...
      • 更容易将 dismax 评分视为支持与查询中最多匹配项的文档。这是大多数人期望的搜索行为。您发布的第一个链接很好地解释了它。 :minimum_match =&gt; 1 应该是默认值。只有当你增加它时它才会生效(这会将结果限制在匹配更多术语的文档中)。
      • NGramFilterFactory 仅在几个特定情况下真正有用(EdgeNGramFilterFactory 有助于前缀搜索/自动完成)。您可能正在匹配一堆您不想匹配的结果(例如,搜索“zz”将匹配任何与“披萨”匹配的结果)。也许你可以发布更多关于你正在尝试做的事情。
      • 我的用户正在使用搜索功能进行搜索,该功能会在他们写作时更新结果,因此我对部分结果感兴趣,以避免在他们输入单词时不显示任何内容。正如您所注意到的,也许 EdgeNGramFilterFactory 更适合此目的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多