0

这个问题在某种程度上与另一个问题相关:Sphinx Filters - Can I have an 'OR' between filters attributes?

在我看来,sphinx 现在已经支持 OR 逻辑来过滤属性,但是没有办法通过思考 sphinx 来使用该功能。

是否可以使用任何复杂的逻辑来过滤思考狮身人面像中的属性?基本上,我要做的是在搜索中指定属性的条件,例如:a OR ((NOT a) AND b),我会像这样使用它:

( (attribute_a == true) OR (attribute_a == false AND attribute_b IN [x,y,z]) )

或者类似的东西。问题是,如果我没记错的话, :with 和 :without 都需要一个散列,并用 AND(或 AND NOT)连接每个条件。

4

1 回答 1

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]) ) =>

模型搜索“((@attribute_a 1)|(attribute_a 0(attribute_b x|y|z)))”,:match_mode => :extended

于 2011-02-21T09:19:24.390 回答