mysql: поиск по точному вхождению фразы?

Статус
В этой теме нельзя размещать новые ответы.

AntonR

Гуру форума
Регистрация
29 Ноя 2007
Сообщения
178
Реакции
75
А как сделать поиск по точному вхождению слова в предложении в базе mysql! (чтобы при поиске "слон" выдавало фразы "большой слон", но не "большая слониха")
 
Например так:

Код:
select * from table where col = 'слон' or col like '% слон %' or col like '% слон' or col like 'слон %'
 
Нууу

как выход - полнотекстовый поиск - с чем едят: Для просмотра ссылки Войди или Зарегистрируйся
А пример такой:
Код:
SELECT `title` FROM `articles` WHERE MATCH (`title`) AGAINST ('+слон' IN BOOLEAN MODE);
Оговорка mysql 4 +.
Еще можно попробывать с RLIKE составить регулярное выражение.
Ремарка к первому ответу: LIKE RLIKE - отнюдь не самый быстрый способ, особенно с перебором OR.
И еще: ("(слон)","слон,",".Слон") - первый предложенный способ не будет выбирать строки с такими примерами, а ведь здесь тоже слово - "слон")
 
RLIKE и LIKE это не выход, так как при их использовании не работают индексы и таблица всегда просматривается полностью.

ИМХО наиболее верным будет либо использование встроенного полнотекстового поиска (MySQL 4+ MyISAM-таблицы), либо использование стороннего полнотекстового движка типа sphinxsearch.com.
По возможности я бы предпочел использовать Sphinx, так как он позволяет делать более настраиваемый и качественный поиск, а так-же выдерживает большие нагрузки чем встроенный полнотекстовый поиск.
 
Сложность заключается в том, что может попасть строка типа:"Большой слон."
И из-за наличия в конце точки, будет считаться, что это не в точности "слон". Поэтому нужна проверка на все возможные символы, котрые могут следаовть после слова, т.е. знаки препинания и т.п.
 
Сложность заключается в том, что может попасть строка типа:"Большой слон."
И из-за наличия в конце точки, будет считаться, что это не в точности "слон". Поэтому нужна проверка на все возможные символы, котрые могут следаовть после слова, т.е. знаки препинания и т.п.

Такая сложность возникнет только при использовании LIKE и RLIKE, а в связи с их медленностью и использование не рекомендуется.
Это типичная задача полнотекстового поиска, с которой они (полнотекстовые поисковые движки) справляются сами, без необходимости перекладывать различные проверки на пользователя.
 
Кроме LIKE есть еще REGEXP. Работает тоже медленно, но поиск можно сделать более гибким.
 
Ну, а как его настроить на мой случай тогда???
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху