MySQL
Wyszukiwanie pełnotekstowe
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);