Мышление Сфинкса Комбинирование: с параметрами - PullRequest
2 голосов
/ 22 сентября 2010

Мне было интересно, как я могу объединить наборы результатов Thinking Sphinx

У меня есть следующий запрос:

Model.search :with => {:attribute_1 => id}

, который я хочу объединить с:

Model.search :with => {:attribute_2 => id}

Есть ли удобный способ сделать это только одним поиском?Я мог бы сделать добавление массивов, но это, кажется, не является хорошим решением вообще.Если я объединю фильтры следующим образом:

Model.search :with => {:attribute_1 => id, :attribute_2 => id}

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

1 Ответ

4 голосов
/ 22 сентября 2010

Это на самом деле сводится к ограничению в Sphinx - у которого нет понятия OR при обращении к атрибутам в фильтрах.

Возможно, вы могли бы объединить два атрибута вместе?Тогда сработает следующее:

Model.search :with => {:attr_1_and_2 => id}

В вашей модели, если вы работаете с отдельными значениями, это определенно будет работать - и, возможно, с массивами значений:

has [attribute_1, attribute2], :as => :attr_1_and_2
...