Фильтры сфинкса - Могу ли я иметь 'ИЛИ' между атрибутами фильтров? - PullRequest
2 голосов
/ 15 мая 2009

Я использую sphinx, чтобы перечислить некоторые элементы из моей базы данных здесь. Это почти 100%, я просто еще не понял, как создать OR между двумя разными фильтрами. Например:

Мой объект в базе данных имеет дату начала и окончания, я могу filter(starting_date, x, y) и filter(ending_date,x,y), но оба фильтра должны будут вернуть true, чтобы привести меня к объекту, как я могу сказать, что sphinx фильтрует этот атрибут или этот?

Ответы [ 3 ]

6 голосов
/ 16 мая 2009

На форумах сфинксов и ответов на них.

Возможно только в 0.9.9, используя SetSelect.

http://sphinxsearch.com/forum/view.html?id=3577

2 голосов
/ 16 мая 2009

В Sphinx нет логики OR для различных атрибутов. Обычно есть два возможных обходных пути:

  1. Имейте один атрибут с несколькими значениями с обоими наборами значений, с которыми вы хотите сопоставить - и фильтруйте по массивам значений.
  2. Если это каждый раз одна и та же логика ИЛИ, объедините ее в один логический атрибут, чтобы SQL-оператор выполнял начальную тяжелую работу.

Использование временных меток усложняет задачу - MVAs на данный момент предназначены только для целых чисел ... Вы после всех объектов, которые происходят в определенное время? Или что-то еще?

1 голос
/ 15 мая 2009

Сфинкс использует | за или

как в «черном» ИЛИ «белом» будет «черный» | «Белый» http://www.sphinxsearch.com/docs/manual-0.9.9.html#boolean-syntax

...