太阳黑子可以处理具有AND和OR运算符的逻辑吗?
Sunspot正在使用dismax请求处理程序,其中minimum_match字段用于实现OR查询/ AND查询
现在问题是我们需要将AND和OR运算符组合在一起。如何实现同样的目标。
text = "Hot Air Balloon"
search = Video.solr_search, :minimum_match => text.size do
fulltext text do
fields :title
end
end
我需要像HOT和AIR或BALLOON
这样的东西答案 0 :(得分:1)
如果您的文本组合数量有限,则可以使用any_of强制OR:
text1=["hot","air"]
text2=["balloon"]
search = Video.search do
any_of do
fulltext text1, fields: :title
fulltext text2, fields: :title
end
end
答案 1 :(得分:0)
不幸的是,any_of和all_of仅适用于标量字段(字符串,整数),不适用于全文搜索(请参阅文档,它在标量字段的上下文中说明了这两种方法)。如果要在一个字段上实现此类效果,则必须手动创建查询:
fulltext "Hot AND Air OR Balloon" do
fields :title
end
它为您提供了对Solr的查询:
q=Hot AND Air OR Balloon&qf=title&rows=1&start=0
我没有测试过,但这也应该有效:
"+hot +air ballon"
' +'标志意味着该词是强制性的。 '气球'因为dismax的默认设置是' OR' operator(您可以在schema.xml,solrQueryParser节点中检查默认运算符的设置)。
答案 2 :(得分:0)