Я должен «искать» в базе данных MySQL, содержащей тысячи комментариев (максимум 200 символов) с традиционным «полем поиска» (как на большинстве веб-сайтов). Я пытался с SQL, как:
SELECT * FROM comments WHERE text LIKE 'Bonjour monsieur'
Но тогда, чтобы обеспечить хорошие возможности поиска, мы должны первый дисплей результаты с Bonjour monsieur
, а затем отобразить результаты с обоими словами Bonjour
а также monsieur
(но, может быть, не один рядом с другим), и затем результаты с Bonjour
или же Monsieur
и т.п.
Кроме того, существует необходимость в поиске без учета регистра, и много подобных вещей (é
e
ê
можно считать одинаковыми буквами для поиска) и т. д.
Чтобы обеспечить пользователю удобство поиска, в нем есть много похожих вещей.
Есть ли встроенная функция в PHP / MySQL для обеспечения этих функций «поисковой системы», или мне нужно кодировать их с нуля?
Примечание: это не тема, в которой задается вопрос «для чего предназначен конкретный инструмент …» (я знаю, что такие вопросы часто рассматриваются как OffTopic в SO), я просто хочу знать, существуют ли эти функции, или мне нужно написать все сам с нуля.
Если вы используете MySQL 5.1, вы можете установить плагин stemmer.
http://forge.mysql.com/projects/project.php?id=215
http://forge.mysql.com/projects/project.php?id=42
Других решений пока нет …