思考Sphinx:是否可以使用具有属性的复杂逻辑?

时间:2010-08-16 08:52:49

标签: ruby-on-rails thinking-sphinx

此问题与其他问题有关: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)连接每个条件。

1 个答案:

答案 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