|
|
|
| Приветствую участников форума!
Подскажите пожалуйста, как осуществить ПОИСК по запросам состоящим из нескольких слов, который бы работал не зависимо от того в каком порядке они водятся пользователем в строку поиска .
Например есть столбец name содержащий следующие строки:
шариковая ручка синяя
шариковая ручка красная
шариковая ручка синяя пластиковая
футболка синяя
как сделать чтобы запрос выдавал первую и третью позиции, и в случае если клиент вводит "синяя ручка" и в случае если вводит "ручка синяя"
и на сколько задача усложнится если попытаться выдать ответ в случае если запрос будет содержать уже три слова и варианты следования могут быть любыми из следующих -
"ручка синяя пластиковая" "пластиковая ручка синяя" "синяя пластиковая ручка"
P.S. Если бы задача была в выведении данных которые соответствуют тому порядку который ввел пользователь то можно было бы, я думаю ограничится запросом:
$search = "синяя ручка";
$search = strtr($search," ","%");
$result_ = mysql_query("SELECT*FROM table WHERE name LIKE '%$search%'",$db);
|
но при смене прядка слов в запросе соответствия не находится.
Как же поступить?
Регулярные выражения? Или как то по другому?
Подскажите пожалуйста. | |
|
|
|
|
|
|
|
для: adreew
(24.02.2010 в 17:56)
| | google: Full-Text search
MATCH(name) AGAINST('шариковая ручка синяя' IN BOOLEAN MODE) | |
|
|
|
|
|
|
|
для: Тень&
(24.02.2010 в 21:07)
| | а этот синтаксис поддерживается MySQL?
Извиняюсь что не указал сразу тип базы | |
|
|
|
|
автор: .heed (24.02.2010 в 21:18) |
|
|
для: Тень&
(24.02.2010 в 21:07)
| | AGAINST('+шариковая +ручка +синяя' IN BOOLEAN MODE) | |
|
|
|
|
|
|
|
для: .heed
(24.02.2010 в 21:18)
| | Спасибо, Тень& и .heed - всё работает | |
|
|
|