Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: поиск, независящий от порядка введенных пользователем слов
 
 автор: adreew   (24.02.2010 в 17:56)   письмо автору
 
 

Приветствую участников форума!
Подскажите пожалуйста, как осуществить ПОИСК по запросам состоящим из нескольких слов, который бы работал не зависимо от того в каком порядке они водятся пользователем в строку поиска .

Например есть столбец name содержащий следующие строки:
шариковая ручка синяя
шариковая ручка красная
шариковая ручка синяя пластиковая
футболка синяя


как сделать чтобы запрос выдавал первую и третью позиции, и в случае если клиент вводит "синяя ручка" и в случае если вводит "ручка синяя"

и на сколько задача усложнится если попытаться выдать ответ в случае если запрос будет содержать уже три слова и варианты следования могут быть любыми из следующих -
"ручка синяя пластиковая" "пластиковая ручка синяя" "синяя пластиковая ручка"

P.S. Если бы задача была в выведении данных которые соответствуют тому порядку который ввел пользователь то можно было бы, я думаю ограничится запросом:

$search = "синяя ручка";
$search = strtr($search," ","%");
$result_ = mysql_query("SELECT*FROM table WHERE name LIKE '%$search%'",$db);

но при смене прядка слов в запросе соответствия не находится.
Как же поступить?
Регулярные выражения? Или как то по другому?
Подскажите пожалуйста.

  Ответить  
 
 автор: Тень&   (24.02.2010 в 21:07)   письмо автору
 
   для: adreew   (24.02.2010 в 17:56)
 

google: Full-Text search

MATCH(name) AGAINST('шариковая ручка синяя' IN BOOLEAN MODE)

  Ответить  
 
 автор: adreew   (24.02.2010 в 21:18)   письмо автору
 
   для: Тень&   (24.02.2010 в 21:07)
 

а этот синтаксис поддерживается MySQL?
Извиняюсь что не указал сразу тип базы

  Ответить  
 
 автор: .heed   (24.02.2010 в 21:18)
 
   для: Тень&   (24.02.2010 в 21:07)
 

AGAINST('+шариковая +ручка +синяя' IN BOOLEAN MODE)

  Ответить  
 
 автор: adreew   (24.02.2010 в 21:27)   письмо автору
 
   для: .heed   (24.02.2010 в 21:18)
 

Спасибо, Тень& и .heed - всё работает

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования