Имя: Пароль:
IT
Веб-мастеринг
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
https://habrahabr.ru/company/sphinx/blog/61222/

юзай обычный 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
Нашел! Все, темку можно закрыть!!!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший