我希望能够使用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
进行全文搜索。
答案 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))
希望你能把它转化为太阳黑子。