Все предлагают полнотекстовый поиск MySQL, однако вы должны знать ОГРОМНОЕ предостережение. Механизм полнотекстового поиска доступен только для механизма MyISAM (не InnoDB, который наиболее часто используется из-за своей ссылочной целостности и соответствия ACID).
Итак, у вас есть несколько вариантов:
1. Простейший подход обозначен Particle Tree . На самом деле вы можете получить ранжированный поиск из чистого SQL (без полного текста, без ничего). Приведенный ниже SQL-запрос будет искать таблицу и ранжировать результаты по количеству появлений строки в полях поиска:
SELECT
SUM(((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'term', '')))/4) +
((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'search', '')))/6))
AS Occurrences
FROM
posts AS p
GROUP BY
p.id
ORDER BY
Occurrences DESC
отредактировал их пример для большей ясности
Варианты вышеупомянутого SQL-запроса, добавление операторов WHERE (WHERE p.body LIKE "% независимо от%%, который вы хотите") и т. Д., Вероятно, получат именно то, что вам нужно.
2. Вы можете изменить схему базы данных для поддержки полного текста. Часто для сохранения ссылочной целостности InnoDB, соответствия ACID и скорости без необходимости установки плагинов, таких как Sphinx Fulltext Search Engine для MySQL, необходимо разделить данные кавычек в свою собственную таблицу. По сути, у вас будет таблица Quotes, представляющая собой таблицу InnoDB, которая вместо вашего поля TEXT «data» содержит ссылку «quote_data_id», которая указывает на идентификатор таблицы Quote_Data, которая является таблицей MyISAM. Вы можете сделать свой полный текст в таблице MyISAM, объединить идентификаторы, возвращенные с вашими таблицами InnoDB, и вуаля, у вас есть результаты.
3. Установка Сфинкс . Удачи с этим.
Учитывая то, что вы описали, я HIGHLY рекомендую вам использовать 1-й подход, который я представил, так как у вас простой сайт, управляемый базой данных. 1-е решение простое, быстро выполняет работу. Lucene будет достаточно сложным для настройки, особенно если вы хотите интегрировать его с базой данных, так как Lucene предназначен главным образом для индексирования файлов, а не баз данных. Пользовательский поиск Google просто лишает ваш сайт тонны репутации (заставляет вас выглядеть дилетантским и взломанным), а полный текст MySQL, скорее всего, заставит вас изменить схему базы данных.