此问题与其他问题有关:Sphinx Filters - Can I have an 'OR' between filters attributes?
在我看来,sphinx现在支持OR逻辑来过滤属性,但是没有办法通过思考sphinx来使用该功能。
是否可以使用任何复杂的逻辑来过度思考sphinx中的属性?基本上,我要做的是在我的搜索中指定属性的条件,例如:a OR ((NOT a) AND b)
,我会像这样使用它:
( (attribute_a == true) OR (attribute_a == false AND attribute_b IN [x,y,z]) )
或类似的东西。问题在于:with和:如果我没有弄错的话,不要期望散列并使用AND(或AND NOT)连接每个条件。
答案 0 :(得分:1)
嗨Sorenly 你可能会使用这样的东西
Model.search“(@ field_name1 value1 | value2)(@ field_name2 value3 | value4),:match_mode =>:extended
这里'|'被等同于或被斯芬克斯等同于空间等同于和。
((attribute_a == true)OR(attribute_a == false AND attribute_b IN [x,y,z])) =>
Model.search“((@ attribute_a 1)| (attribute_a 0(attribute_b x | y | z)) )”,的
:match_mode => :extended
强>