Szukaj…


Wprowadzenie

MySQL oferuje wyszukiwanie FULLTEXT. Przeszukuje tabele z kolumnami zawierającymi tekst w celu znalezienia najlepszego dopasowania dla słów i fraz.

Uwagi

Wyszukiwanie FULLTEXT działa dziwnie na tabelach zawierających małą liczbę wierszy. Tak więc, kiedy eksperymentujesz z tym, może być pomocne uzyskanie średniej wielkości stołu online. Oto tabela pozycji książek z tytułami i autorami. Możesz go pobrać, rozpakować i załadować do MySQL.

Wyszukiwanie FULLTEXT jest przeznaczone do użycia z pomocą człowieka. Został zaprojektowany tak, aby uzyskać więcej dopasowań niż zwykła operacja filtrowania w WHERE column LIKE 'text%' .

Wyszukiwanie FULLTEXT jest dostępne dla tabel MyISAM . Jest również dostępny dla tabel InnoDB w MySQL w wersji 5.6.4 lub nowszej.

Proste wyszukiwanie PEŁNOTEKSTOWE

    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;

Biorąc pod uwagę tabelę o nazwie book z kolumnami o nazwach ISBN , „Tytuł” i „Autor”, znajdzie książki pasujące do terminów 'Database Programming' . Najpierw pokazuje najlepsze dopasowania.

Aby to zadziałało, musi być dostępny indeks pełnotekstowy w kolumnie Title :

ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);

Proste wyszukiwanie 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;

Biorąc pod uwagę tabelę o nazwie book z kolumnami o nazwach ISBN , Title i Author , wyszukiwane są książki zawierające w tytule słowa 'Database' i 'Programming' , ale nie słowo 'Java' .

Aby to zadziałało, musi być dostępny indeks pełnotekstowy w kolumnie Tytuł:

ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);

Wielokolumnowe wyszukiwanie 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;

Biorąc pod uwagę tabelę o nazwie książka z kolumnami o nazwach ISBN , Title i Author , znajdzie książki pasujące do terminów „Programowanie bazy danych daty”. Najpierw pokazuje najlepsze dopasowania. Najlepsze mecze obejmują książki napisane przez prof. CJ Date.

(Ale jednym z najlepszych dopasowań jest także Poradnik Randkowy Doktora Randki: Jak dostać się od pierwszej randki do idealnej znajomości . To pokazuje ograniczenie wyszukiwania PEŁNOTEKSTOWEGO: nie udaje, że rozumie takie rzeczy jak części mowy lub znaczenie indeksowanych słów).

Aby to zadziałało, musi być dostępny indeks pełnotekstowy w kolumnach Tytuł i Autor:

ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_author_index (Title, Author);


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow