MySQL
Полнотекстовый поиск
Поиск…
Вступление
MySQL предлагает поиск FULLTEXT. Он ищет таблицы со столбцами, содержащими текст для лучших совпадений слов и фраз.
замечания
FULLTEXT работает странно на таблицах, содержащих небольшое количество строк. Поэтому, когда вы экспериментируете с ним, вам может быть полезно получить таблицу среднего размера в Интернете. Вот таблица книг , с названиями и авторами. Вы можете загрузить его, разархивировать и загрузить в MySQL.
Поиск FULLTEXT предназначен для использования с помощью человека. Он предназначен для получения большего количества совпадений, чем обычная операция WHERE column LIKE 'text%' .
Поиск FULLTEXT доступен для таблиц MyISAM . Он также доступен для таблиц InnoDB в MySQL версии 5.6.4 или новее.
Простой поиск FULLTEXT
SET @searchTerm= 'Database Programming';
SELECT MATCH (Title) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) Score,
ISBN, Author, Title
FROM book
WHERE MATCH (Title) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE)
ORDER BY MATCH (Title) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) DESC;
Учитывая таблицу с именем book с колоннами по имени ISBN , «Title» и «Автор», это находит книги , соответствующие термины 'Database Programming' . Сначала показаны лучшие совпадения.
Чтобы это работало, должен быть доступен полный текст в столбце « Title :
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);
Простой поиск BOOLEAN
SET @searchTerm= 'Database Programming -Java';
SELECT MATCH (Title) AGAINST (@searchTerm IN BOOLEAN MODE) Score,
ISBN, Author, Title
FROM book
WHERE MATCH (Title) AGAINST (@searchTerm IN BOOLEAN MODE)
ORDER BY MATCH (Title) AGAINST (@searchTerm IN BOOLEAN MODE) DESC;
Для таблицы, названной book с столбцами с именем ISBN , Title и Author , это поиск книг со словами 'Database' и 'Programming' в названии, но не слово 'Java' .
Чтобы это работало, должен быть доступен полный текст в столбце «Название»:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);
Многостолбцовый поиск FULLTEXT
SET @searchTerm= 'Date Database Programming';
SELECT MATCH (Title, Author) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) Score,
ISBN, Author, Title
FROM book
WHERE MATCH (Title, Author) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE)
ORDER BY MATCH (Title, Author) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) DESC;
Учитывая таблицу с именем book с столбцами с именем ISBN , Title и Author , это находит книги, соответствующие терминам «Программирование базы данных дат». Сначала показаны лучшие совпадения. Лучшие матчи включают книги, написанные профессором CJ Date.
(Но один из лучших совпадений - это также «Руководство по дате врача» для знакомства: как добраться от первой даты до идеального помощника . Это показывает ограничение поиска FULLTEXT: оно не претендует на понимание таких вещей, как части речи или значение индексированных слов.)
Для этого необходимо иметь полнотекстовый индекс в столбцах Title и Author:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_author_index (Title, Author);