如何在Solr中搜索与Y条件匹配的文档,使用太阳黑子

时间:2014-08-19 14:54:03

标签: solr elasticsearch sunspot

我希望能够使用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个标签的项目。

如何使用太阳黑子?我只看到minimum_match进行全文搜索。

1 个答案:

答案 0 :(得分:2)

在solr中,您可以通过指定mm(Minimum should Match)参数,使用edismax查询解析器执行此操作。它适用于多值字段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))

希望你能把它转化为太阳黑子。