Поиск…


Вступление

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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow