MySQL полнотекстовый поиск? - PullRequest
1 голос
/ 28 апреля 2009

Я работаю над поиском на моем сайте. Я хочу предоставить лучший механизм поиска для пользователей. Я использую PHP / MYSQL.

Допустим, пользователь искал "спорт".

У меня есть 30 записей со словом "спорт" и 5 записей со словом "спорт", но когда я ищу спорт, то следующий запрос возвращает только результат 30, имеющий слово "спорт". Но на самом деле я думаю, что лучший способ обеспечить хороший результат поиска - показать все 30 + 5 записей, все записи, имеющие вид спорта или спорта.

SELECT DISTINCT p.id, p.title, p.descr, p.tags FROM pdata p WHERE MATCH (p.title, p.tags, p.descr) AGAINST ('sport')

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

Ответы [ 3 ]

2 голосов
/ 28 апреля 2009
...MATCH (p.title, p.tags, p.descr) AGAINST ('sport*' IN BOOLEAN MODE)

Может сделать свое дело.

Edit, документация MySQL является отличным ресурсом для решения подобных проблем! :)

0 голосов
/ 28 апреля 2009

В вашем случае я бы сделал следующий запрос:

SELECT p.id, p.title, p.descr, p.tags ОТ pdata p ГДЕ (p.title НРАВИТСЯ "% SPORT%" ИЛИ p.tags LIKE "% SPORT%" ИЛИ p.descr LIKE '% SPORT%')

В этом запросе будут найдены любые статьи, которые охватывают спортивные журналы и т. Д.

0 голосов
/ 28 апреля 2009

Просто используйте подстановочный знак% в строках поиска. Это позволит сопоставить любые слова, образованные строкой поиска. К сожалению, вам нужно быть в булевом режиме, чтобы этот шаблон работал. Кроме того, все строки поиска должны быть больше 3 символов, чтобы отображаться с помощью полнотекстового поиска. это может быть изменено в системных настройках mysql, но по умолчанию 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...