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);