|
Sphinx: язык запросов. Как сделать условие ИЛИ
| ☑ |
0
D_Pavel
04.08.16
✎
13:57
|
нужно найти по колонке 'tovar' варианты которые подходят под любую из данных фраз. Например: "Яблоки красные" ИЛИ "Груши зеленые".
я пишу на PHP так:
$sphinx->match('tovar', 'Яблоки красные|Груши зеленые', true);
Но он ничего не находит. Хотя если любую фразу написать отдельно, то находит.
Как исправить?
|
|
1
Волшебник
модератор
04.08.16
✎
13:58
|
$sphinx->match('tovar', '(Яблоки красные)|(Груши зеленые)', true);
|
|
2
D_Pavel
04.08.16
✎
14:02
|
(1) Мне кажется он будет экранировать скобки. Или не замечает. Потому что все равно ничего не нашел
|
|
3
Волшебник
модератор
04.08.16
✎
14:04
|
|
|
4
Garykom
гуру
04.08.16
✎
14:06
|
юзай обычный sql синтаксис
|
|
5
hitodom
04.08.16
✎
14:09
|
(4) из комментов
Вынужден огорчить, но в статье написано обратное:
«Есть ряд ограничений на условия WHERE, тк. они транслируется непосредственно в фильтры; самое заметное заключется в том, что не поддерживается OR, только AND.»
|
|
6
Garykom
гуру
04.08.16
✎
14:10
|
(5) угу и "Спец-функция MATCH() передает полнотекстовый запрос и может встречаться не более одного раза. В случае, если ее нету, включается т.н. full scan режим, который перебирает все существующие в индексе записи, применяя WHERE/GROUP BY/ORDER BY."
|
|
7
Garykom
гуру
04.08.16
✎
14:11
|
(5) Кста кто мешает 2 запроса для ИЛИ сделать и соединить?
|
|
8
patapum
04.08.16
✎
14:13
|
(5) A or B = not (not A and not B) не подходит?
|
|
9
D_Pavel
04.08.16
✎
18:16
|
(4) обычный не пойдет. Все уже написано на php обертке, нужно только ошибку исправить
|
|
10
D_Pavel
09.08.16
✎
07:49
|
Нашел! Все, темку можно закрыть!!!
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший