Фильтры Sphinx. Могу ли я использовать «ИЛИ» между атрибутами фильтров?
Вопрос
Я использую sphinx, чтобы перечислить здесь некоторые элементы из моей базы данных.Это почти 100%, просто я еще не разобрался как создать OR
между двумя разными фильтрами.Например:
Мой объект в базе данных имеет начальную и конечную дату, я могу filter(starting_date, x, y)
и filter(ending_date,x,y)
, но оба фильтра должны будут вернуть true, чтобы передать мне объект, как я могу сказать сфинксу отфильтровать этот атрибут или тот?
Решение
Sphinx использует | для или
Как в «черном» или «белом» было бы «черным» | "белый"http://www.sphinxsearch.com/docs/manual-0.9.9.html#boolean-syntax
Другие советы
Вопросы и ответы на форумах Sphinx.
Возможно только в версии 0.9.9 с использованием SetSelect.
Нет никакого способа иметь OR
логика различных атрибутов в Sphinx.Обычно есть два возможных обходных пути:
- Имейте один многозначный атрибут с обоими наборами значений, которые вы хотите сопоставить, и фильтруйте массивы значений.
- Если каждый раз используется одна и та же логика ИЛИ, объедините ее в один логический атрибут, а оператор SQL выполнит начальную тяжелую работу.
Однако использование временных меток немного усложняет задачу: на данный момент MVA предназначены только для целых чисел...вам интересны все объекты, происходящие в определенное время?Или что-то другое?