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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow