Оглавление

10.2. Реализация полнотекстового поиска

Полнотекстовый поиск выполняется с помощью конструкции MATCH(...) AGAINST(...). Конструкция имеет следующий формат:
MATCH(<Поля через запятую>)
AGAINST('<Строка для поиска>' [<Модификатор>])
Необязательный параметр <Модификатор> может принимать следующие значения:
□ IN BOOLEAN MODE — режим логического поиска;
□ WITH QUERY EXPANSION — поиск с расширением запроса.

 
Для примера добавим три записи в таблицу search1:
INSERT INTO `search1` VALUES (NULL, 'В индекс попадут слова длиной от 4 до 84 символов. Данные значения задаются переменными ft_min_word_len и ft_max_word_len соответственно. Изменить значения этих переменных можно через конфигурационный файл my.ini. После изменения значения переменных
необходимо заново создать индексы FULLTEXT.'); (1)
INSERT INTO `search1` VALUES (NULL, 'Запись 2');
INSERT INTO `search1` VALUES (NULL, 'Строка 3');

 

А теперь найдем строку с помощью полнотекстового поиска:

SELECT * FROM `search1` WHERE MATCH(`str`) AGAINST('значения');
Результаты поиска сортируются по коэффициенту релевантности. Коэффициент представляет собой число с плавающей точкой. Чтобы увидеть этот коэффициент для разных запросов, воспользуемся следующими SQL-запросами:

 

SELECT MATCH(`str`) AGAINST('конфигурационный файл') AS iq
FROM `search1` WHERE MATCH(`str`) AGAINST('конфигурационный файл');
 /* Выведет: 0.99839779903687 */
SELECT MATCH(`str`) AGAINST('конфигурационный файл') AS iq
FROM `search1` WHERE MATCH(`str`) AGAINST('конфигурационный файл');
/* Выведет: 0.49919889951843 */

Примечания:
  • Для реализации полнотекстового поиска в таблице должно быть не менее трех записей.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити