2010-08-16 3 views
0

Этот вопрос находится в пути в связи с этим другой вопрос: Sphinx Filters - Can I have an 'OR' between filters attributes?Мышление 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

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

Model.search «(@ название_поля1 значению1 | значение2) (@ название_поля2 value3 | Value4) : match_mode =>: расширенный

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

((attribute_a == истина) ИЛИ (attribute_a == ложные и attribute_b В [х, у, г])) =>

Model.search "((@attribute_a 1) | (attribute_a 0 (attribute_b х | у | г)) )", :match_mode => :extended

+0

Это, кажется, работает, хотя я, наконец, пошел с другим решением в этом проекте ... это пригодится в следующий раз, когда я использую sphinx. благодаря :-) – eyko

Смежные вопросы