MySQL
Heltekstsökning
Sök…
Introduktion
MySQL erbjuder FULLTEXT-sökning. Den söker i tabeller med kolumner som innehåller text för de bästa matchningarna för ord och fraser.
Anmärkningar
FULLTEXT
sökning fungerar konstigt på tabeller som innehåller litet antal rader. Så när du experimenterar med det kan det vara bra att få ett medelstort bord online. Här är en tabell över bokföremål , med titlar och författare. Du kan ladda ner den, packa upp den och ladda den i MySQL.
FULLTEXT
sökning är avsedd att användas med mänsklig hjälp. Den är utformad för att ge fler matchningar än en vanlig WHERE column LIKE 'text%'
-filtrering.
FULLTEXT
sökning är tillgänglig för MyISAM
tabeller. Det är också tillgängligt för InnoDB
tabeller i MySQL version 5.6.4 eller senare.
Enkel FULLTEXT-sökning
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;
Med en tabell som heter book
med kolumner med namnet ISBN
, 'Titel' och 'Författare', hittar det böcker som matchar termerna 'Database Programming'
. Det visar de bästa matcherna först.
För att detta ska fungera måste ett fulltextindex i kolumnen Title
vara tillgängligt:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);
Enkel BOOLEAN-sökning
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;
Genom en tabell med namnet book
med kolumner med namnet ISBN
, Title
och Author
söker den efter böcker med orden 'Database'
och 'Programming'
i titeln, men inte ordet 'Java'
.
För att detta ska fungera måste ett fulltextindex i kolumnen Titel vara tillgängligt:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);
FULLTEXT-sökning med flera kolumner
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;
Med en tabell som heter bok med kolumner med namnet ISBN
, Title
och Author
, hittar det böcker som matchar termerna "Datumdatabasprogrammering". Det visar de bästa matcherna först. De bästa matchningarna inkluderar böcker skriven av prof. CJ Date.
(Men en av de bästa matchningarna är också The Date Doctor's Guide to Dating: How to Get from First Date to Perfect Mate . Detta visar en begränsning av FULLTEXT-sökning: den låtsas inte förstå sådant som delar av tal eller betydelsen av de indexerade orden.)
För att detta ska fungera måste ett fulltextindex i kolumnen Titel och författare vara tillgängligt:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_author_index (Title, Author);