【问题标题】:How to search for documents matching X out of Y conditions in Solr, with Sunspot如何使用 Sunspot 在 Solr 中搜索符合 X out of Y 条件的文档
【发布时间】:2014-08-19 14:54:02
【问题描述】:

我希望能够使用 Solr + Sunspot 运行与此 ElasticSearch 查询等效的查询。该示例使用的是 Tire,但它非常接近 json 中的原始查询:

query do
  boolean do
    must do
      boolean minimum_number_should_match: 1 do
        should { term :mod_id, 1 }
        should { term :mod_id, 2 }
        should { term :mod_id, 3 }
      end
    end
  end
end

在我的应用中,用户可以标记自己。项目也标有相同的标签。我想向用户推荐项目,例如与给定用户至少有 2 个共同标签的项目。

我将如何使用 Sunspot 做到这一点?我只看到minimum_match 进行全文搜索。

【问题讨论】:

    标签: solr elasticsearch sunspot


    【解决方案1】:

    在 solr 中,您可以使用 edismax 查询解析器通过指定 mm(最小应该匹配)参数来做到这一点。它适用于多值字段mod_id,如下所示:

    http://HOST:PORT/solr/CORE/select?defType=edismax&mm=2&q=mod_id:(1 2 3)
    

    这将转化为使用 lucene 查询解析器的查询:

    /select?q=(mod_id:(1 AND 2) OR mod_id:(1 AND 3) OR mod_id:(2 AND 3))
    

    希望你能把它翻译成太阳黑子。

    【讨论】:

    • 谢谢,这很有帮助!好吧,我不认为 sunspot 直接支持这一点,但它确实可以让你变得肮脏并编写一个 lucene 查询,所以这就是我要尝试的 :) 谢谢。 (ps:我会稍等一下再接受你的回答)
    • 如果 sunspot 没有,您可以在 solr config 中添加为默认参数(或定义额外的处理程序)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多