0

この質問は、この他の質問に関連しています: Sphinx Filters - Can I have an 'OR' between filters attributes?

スフィンクスは現在、属性でフィルタリングする OR ロジックをサポートしているように思えますが、スフィンクスを考えてその機能を使用する方法はありません。

スフィンクスを考える際に、複雑なロジックを使用して属性でフィルタリングすることは可能ですか? 基本的に、私がやろうとしているのは、検索で属性の条件を指定することです。たとえば、次のよう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

ここで「|」はスフィンクスまたはスフィンクスと同一視され、スペースは and と同一視されます。

( (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

于 2011-02-21T09:19:24.390 に答える