Мышление Сфинкса: возможно ли использовать сложную логику с атрибутами? - PullRequest
0 голосов
/ 16 августа 2010

Этот вопрос каким-то образом связан с другим вопросом: Фильтры сфинкса - Могу ли я иметь 'ИЛИ' между атрибутами фильтров?

Мне кажется, что сфинкс теперь имеет поддержкудля логики ИЛИ для фильтрации по атрибутам, но нет способа использовать эту функцию с помощью мышления сфинкса.

Можно ли использовать любую сложную логику для фильтрации по атрибутам в мыслящем сфинксе?По сути, я пытаюсь указать условия для атрибутов в моем поиске, например что-то вроде: 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 Ответ

1 голос
/ 21 февраля 2011

Привет Соренли Вы, вероятно, можете использовать что-то вроде этого

Model.search "(@ field_name1 value1 | value2) (@ field_name2 value3 | value4), : match_mode =>: расширенный

Здесь '|' приравнивается к или сфинксу, а пространство равно и.

((attribute_a == true) ИЛИ (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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...