sql >> Database >  >> RDS >> Mysql

Hoe de MATCH()-functie werkt in MySQL

In MySQL is de MATCH() functie voert een zoekopdracht in de volledige tekst uit. Het accepteert een door komma's gescheiden lijst van te doorzoeken tabelkolommen.

De tabel(len) moeten een FULLTEXT . hebben index voordat u er een volledige tekst op kunt zoeken (hoewel booleaanse zoekopdrachten op een MyISAM zoekindex kan werken — zij het langzaam — zelfs zonder een FULLTEXT inhoudsopgave).

U kunt een FULLTEXT . maken index bij het maken van de tabel (met behulp van de CREATE TABLE statement), of u kunt de ALTER TABLE . gebruiken statement of de CREATE INDEX statement als de tabel al bestaat.

Standaard is de zoekopdracht niet hoofdlettergevoelig. Gebruik een hoofdlettergevoelige of binaire sortering voor de geïndexeerde kolommen om hoofdlettergevoelig te zoeken.

Syntaxis

De syntaxis voor de MATCH() functie gaat als volgt:

MATCH (col1,col2,...) AGAINST (expr [search_modifier])

Waar col1,col2,... is de door komma's gescheiden lijst met te doorzoeken kolommen, en expr is de invoertekenreeks/expressie.

De optionele search_modifier argument kunt u het zoektype specificeren. Dit kan een van de volgende waarden zijn:

  • IN NATURAL LANGUAGE MODE
  • IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
  • IN BOOLEAN MODE
  • WITH QUERY EXPANSION

De standaardmodus is IN NATURAL LANGUAGE MODE .

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld van hoe u deze functie kunt gebruiken:

SELECT AlbumId, AlbumName
FROM Albums
WHERE MATCH(AlbumName) AGAINST('cool');

Resultaat:

+---------+--------------------+
| AlbumId | AlbumName          |
+---------+--------------------+
|       5 | Casualties of Cool |
+---------+--------------------+

Hier is de volledige tabel waarop de bovenstaande query is uitgevoerd:

SELECT AlbumId, AlbumName
FROM Albums;

Resultaat:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

Voorbeeld 2 – Fout:“Kan FULLTEXT-index niet vinden”

InnoDB tabellen moeten een FULLTEXT . hebben index voordat het resultaten van een volledige tekstzoekopdracht retourneert. Als het geen FULLTEXT heeft index, krijgt u waarschijnlijk de volgende foutmelding:

ERROR 1191 (HY000): Can't find FULLTEXT index matching the column list

Als je die foutmelding krijgt, moet je een FULLTEXT . toevoegen index voor alle kolommen die u probeert te doorzoeken (zie volgend voorbeeld).

De uitzondering hierop kan zijn als u een booleaanse query uitvoert op een MyISAM zoekindex.

Om specifieker te zijn, vermeldt de MySQL-documentatie voor booleaanse zoekopdrachten in volledige tekst het volgende:

InnoDB tabellen vereisen een FULLTEXT index op alle kolommen van de MATCH() expressie om booleaanse zoekopdrachten uit te voeren. Booleaanse zoekopdrachten tegen een MyISAM zoekindex kan zelfs werken zonder een FULLTEXT index, hoewel een zoekopdracht op deze manier vrij traag zou zijn.

Voorbeeld 3 – Een FULLTEXT-index toevoegen aan een bestaande tabel

Hier is een voorbeeld van het toevoegen van een FULLTEXT index naar een bestaande tabel:

ALTER TABLE Albums  
ADD FULLTEXT(AlbumName);

In dit geval heb ik de inhoud van de AlbumName . geïndexeerd kolom.

Om meerdere kolommen te indexeren, scheidt u ze met een komma (zie volgend voorbeeld).

Voorbeeld 4 – Meerdere kolommen doorzoeken

Als u denkt dat u meer dan één kolom moet doorzoeken, moet u een index maken die alle kolommen bevat waarin moet worden gezocht. Om dit te doen, voegt u eenvoudig elke kolom toe als een door komma's gescheiden lijst.

Hier is een voorbeeld waarbij ik een FULLTEXT . toevoeg index van de film tabel (die deel uitmaakt van de Sakila-voorbeelddatabase).

ALTER TABLE film 
ADD FULLTEXT(title, description);

In dit geval indexeer ik de inhoud van de title en description kolommen.

Nu we een FULLTEXT . hebben gemaakt index voor beide kolommen, kunnen we er een volledige tekst op zoeken:

SELECT title, description
FROM film
WHERE MATCH(title, description) AGAINST('vertigo');

Resultaat:

+-------------------+-----------------------------------------------------------------------------------------------------------+
| title             | description                                                                                               |
+-------------------+-----------------------------------------------------------------------------------------------------------+
| VERTIGO NORTHWEST | A Unbelieveable Display of a Mad Scientist And a Mad Scientist who must Outgun a Mad Cow in Ancient Japan |
+-------------------+-----------------------------------------------------------------------------------------------------------+

Hier is nog een zoekopdracht, waarbij de exacte sleutelzin niet overeenkomt, maar elk zoekwoord binnen die zin wel:

SELECT title, description
FROM film
WHERE MATCH(title, description) AGAINST('Iron Maiden');

Resultaat:

+-------------+---------------------------------------------------------------------------------------------------------+
| title       | description                                                                                             |
+-------------+---------------------------------------------------------------------------------------------------------+
| IRON MOON   | A Fast-Paced Documentary of a Mad Cow And a Boy who must Pursue a Dentist in A Baloon                   |
| MAIDEN HOME | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
+-------------+---------------------------------------------------------------------------------------------------------+

Als u alleen wilt dat de exacte woordgroep overeenkomt, plaatst u er dubbele aanhalingstekens omheen:

SELECT title, description
FROM film
WHERE MATCH(title, description) AGAINST('"Iron Maiden"');

Resultaat:

Empty set (0.00 sec)

In dit geval bevat geen van de kolommen die exacte zin.

Voorbeeld 5 – Geef de relevantiescore terug

Telkens wanneer u de MATCH() . gebruikt functie, krijgt elke rij in de tabel een relevantiewaarde. Met andere woorden, elke rij krijgt een score die bepaalt hoe relevant deze is voor de zoekterm. De resultaten worden vervolgens gerangschikt op relevantie (hoogste relevantie eerst).

Relevantiewaarden zijn niet-negatieve getallen met drijvende komma. Nul relevantie betekent geen gelijkenis. Relevantie wordt berekend op basis van het aantal woorden in de rij (document), het aantal unieke woorden in de rij, het totale aantal woorden in de verzameling en het aantal rijen dat een bepaald woord bevat.

Om de relevantie van elk resultaat terug te geven, voegt u gewoon de MATCH() . toe functie in uw lijst met kolommen om te selecteren.

Voorbeeld:

SELECT 
  MATCH(title, description) AGAINST('Iron Maiden') AS Relevance,
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('Iron Maiden');

Resultaat:

+-----------+-------------+---------------------------------------------------------------------------------------------------------+
| Relevance | title       | description                                                                                             |
+-----------+-------------+---------------------------------------------------------------------------------------------------------+
|         9 | IRON MOON   | A Fast-Paced Documentary of a Mad Cow And a Boy who must Pursue a Dentist in A Baloon                   |
|         9 | MAIDEN HOME | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
+-----------+-------------+---------------------------------------------------------------------------------------------------------+

In dit geval is de relevantiescore voor beide rijen erg hoog.

Hier is er nog een waar de relevantie lager is:

SELECT 
  MATCH(title, description) AGAINST('Saga of a Moose') AS Relevance,
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('Saga of a Moose')
LIMIT 15;

Resultaat:

+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| Relevance          | title                  | description                                                                                             |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| 2.4431142807006836 | CAPER MOTIONS          | A Fateful Saga of a Moose And a Car who must Pursue a Woman in A MySQL Convention                       |
| 2.4431142807006836 | DATE SPEED             | A Touching Saga of a Composer And a Moose who must Discover a Dentist in A MySQL Convention             |
| 2.4431142807006836 | DELIVERANCE MULHOLLAND | A Astounding Saga of a Monkey And a Moose who must Conquer a Butler in A Shark Tank                     |
| 2.4431142807006836 | FLASH WARS             | A Astounding Saga of a Moose And a Pastry Chef who must Chase a Student in The Gulf of Mexico           |
| 2.4431142807006836 | HAROLD FRENCH          | A Stunning Saga of a Sumo Wrestler And a Student who must Outrace a Moose in The Sahara Desert          |
| 2.4431142807006836 | MAIDEN HOME            | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
| 2.4431142807006836 | SHANE DARKNESS         | A Action-Packed Saga of a Moose And a Lumberjack who must Find a Woman in Berlin                        |
| 2.4431142807006836 | SLEEPLESS MONSOON      | A Amazing Saga of a Moose And a Pastry Chef who must Escape a Butler in Australia                       |
| 2.4431142807006836 | WAKE JAWS              | A Beautiful Saga of a Feminist And a Composer who must Challenge a Moose in Berlin                      |
| 2.4431142807006836 | WONKA SEA              | A Brilliant Saga of a Boat And a Mad Scientist who must Meet a Moose in Ancient India                   |
| 1.2399028539657593 | AIRPLANE SIERRA        | A Touching Saga of a Hunter And a Butler who must Discover a Butler in A Jet Boat                       |
| 1.2399028539657593 | ALASKA PHANTOM         | A Fanciful Saga of a Hunter And a Pastry Chef who must Vanquish a Boy in Australia                      |
| 1.2399028539657593 | ARMY FLINTSTONES       | A Boring Saga of a Database Administrator And a Womanizer who must Battle a Waitress in Nigeria         |
| 1.2399028539657593 | BEAR GRACELAND         | A Astounding Saga of a Dog And a Boy who must Kill a Teacher in The First Manned Space Station          |
| 1.2399028539657593 | BERETS AGENT           | A Taut Saga of a Crocodile And a Boy who must Overcome a Technical Writer in Ancient China              |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+

Merk op dat de resultatenset veel groter zou zijn geweest als ik LIMIT 15 niet had gebruikt om het aantal resultaten te beperken tot 15.

Voorbeeld 6 – Retourneer alleen resultaten boven een bepaalde relevantiescore

We kunnen in het vorige voorbeeld nog een stap verder gaan en alleen die resultaten met een bepaalde relevantiescore eruit filteren. In dit geval geef ik aan dat de relevantiescore hoger moet zijn dan 2.

Wees echter voorzichtig wanneer u dit doet. Zoals hierboven te zien is, kunnen relevantiewaarden erg hoog of erg laag zijn, afhankelijk van factoren zoals hoeveel tekst er in de kolom staat, hoeveel andere rijen overeenkomen met de zoekterm, enz.

SELECT 
  MATCH(title, description) AGAINST('Saga of a Moose') AS Relevance,
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('Saga of a Moose') > 2;

Resultaat:

+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| Relevance          | title                  | description                                                                                             |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+
| 2.4431142807006836 | CAPER MOTIONS          | A Fateful Saga of a Moose And a Car who must Pursue a Woman in A MySQL Convention                       |
| 2.4431142807006836 | DATE SPEED             | A Touching Saga of a Composer And a Moose who must Discover a Dentist in A MySQL Convention             |
| 2.4431142807006836 | DELIVERANCE MULHOLLAND | A Astounding Saga of a Monkey And a Moose who must Conquer a Butler in A Shark Tank                     |
| 2.4431142807006836 | FLASH WARS             | A Astounding Saga of a Moose And a Pastry Chef who must Chase a Student in The Gulf of Mexico           |
| 2.4431142807006836 | HAROLD FRENCH          | A Stunning Saga of a Sumo Wrestler And a Student who must Outrace a Moose in The Sahara Desert          |
| 2.4431142807006836 | MAIDEN HOME            | A Lacklusture Saga of a Moose And a Teacher who must Kill a Forensic Psychologist in A MySQL Convention |
| 2.4431142807006836 | SHANE DARKNESS         | A Action-Packed Saga of a Moose And a Lumberjack who must Find a Woman in Berlin                        |
| 2.4431142807006836 | SLEEPLESS MONSOON      | A Amazing Saga of a Moose And a Pastry Chef who must Escape a Butler in Australia                       |
| 2.4431142807006836 | WAKE JAWS              | A Beautiful Saga of a Feminist And a Composer who must Challenge a Moose in Berlin                      |
| 2.4431142807006836 | WONKA SEA              | A Brilliant Saga of a Boat And a Mad Scientist who must Meet a Moose in Ancient India                   |
+--------------------+------------------------+---------------------------------------------------------------------------------------------------------+

Voorbeeld 7 – Inclusief resultaten met nul relevantie

Hier is een voorbeeld van het opsommen van de relevantiewaarden voor elke rij, zelfs als de relevantiewaarde nul is. We kunnen dit doen door de MATCH() . niet te gebruiken functie in de WHERE clausule.

In dit voorbeeld gebruik ik niet echt een WHERE clausule. Ik gebruik alleen een LIMIT clausule om het aantal resultaten te beperken.

SELECT 
  MATCH(title, description) AGAINST('Scientist') AS Relevance,
  title, 
  description
FROM film
LIMIT 15;

Resultaat:

+-------------------+------------------+-----------------------------------------------------------------------------------------------------------------------+
| Relevance         | title            | description                                                                                                           |
+-------------------+------------------+-----------------------------------------------------------------------------------------------------------------------+
| 1.026631474494934 | ACADEMY DINOSAUR | A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies                      |
|                 0 | ACE GOLDFINGER   | A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China                  |
|                 0 | ADAPTATION HOLES | A Astounding Reflection of a Lumberjack And a Car who must Sink a Lumberjack in A Baloon Factory                      |
|                 0 | AFFAIR PREJUDICE | A Fanciful Documentary of a Frisbee And a Lumberjack who must Chase a Monkey in A Shark Tank                          |
|                 0 | AFRICAN EGG      | A Fast-Paced Documentary of a Pastry Chef And a Dentist who must Pursue a Forensic Psychologist in The Gulf of Mexico |
|                 0 | AGENT TRUMAN     | A Intrepid Panorama of a Robot And a Boy who must Escape a Sumo Wrestler in Ancient China                             |
|                 0 | AIRPLANE SIERRA  | A Touching Saga of a Hunter And a Butler who must Discover a Butler in A Jet Boat                                     |
|                 0 | AIRPORT POLLOCK  | A Epic Tale of a Moose And a Girl who must Confront a Monkey in Ancient India                                         |
| 2.053262948989868 | ALABAMA DEVIL    | A Thoughtful Panorama of a Database Administrator And a Mad Scientist who must Outgun a Mad Scientist in A Jet Boat   |
|                 0 | ALADDIN CALENDAR | A Action-Packed Tale of a Man And a Lumberjack who must Reach a Feminist in Ancient China                             |
|                 0 | ALAMO VIDEOTAPE  | A Boring Epistle of a Butler And a Cat who must Fight a Pastry Chef in A MySQL Convention                             |
|                 0 | ALASKA PHANTOM   | A Fanciful Saga of a Hunter And a Pastry Chef who must Vanquish a Boy in Australia                                    |
|                 0 | ALI FOREVER      | A Action-Packed Drama of a Dentist And a Crocodile who must Battle a Feminist in The Canadian Rockies                 |
|                 0 | ALICE FANTASIA   | A Emotional Drama of a A Shark And a Database Administrator who must Vanquish a Pioneer in Soviet Georgia             |
| 1.026631474494934 | ALIEN CENTER     | A Brilliant Drama of a Cat And a Mad Scientist who must Battle a Feminist in A MySQL Convention                       |
+-------------------+------------------+-----------------------------------------------------------------------------------------------------------------------+

Voorbeeld 8 – Booleaanse modus

MySQL stelt ons in staat om full-text zoekopdrachten uit te voeren in booleaanse modus. Voeg hiervoor de IN BOOLEAN MODE . toe modifier voor uw zoekopdracht.

In de Booleaanse modus kunt u operatoren gebruiken zoals + en - om aan te geven of een bepaald woord of bepaalde zin wel of niet aanwezig moet zijn.

In het volgende voorbeeld voeg ik elk woord toe met een plusteken (+ ) om aan te geven dat beide woorden aanwezig moeten zijn.

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('+Saga +Moose' IN BOOLEAN MODE)
LIMIT 3;

Resultaat:

+------------------------+---------------------------------------------------------------------------------------------+
| title                  | description                                                                                 |
+------------------------+---------------------------------------------------------------------------------------------+
| CAPER MOTIONS          | A Fateful Saga of a Moose And a Car who must Pursue a Woman in A MySQL Convention           |
| DATE SPEED             | A Touching Saga of a Composer And a Moose who must Discover a Dentist in A MySQL Convention |
| DELIVERANCE MULHOLLAND | A Astounding Saga of a Monkey And a Moose who must Conquer a Butler in A Shark Tank         |
+------------------------+---------------------------------------------------------------------------------------------+

In het volgende voorbeeld verander ik een van de plustekens in een minteken (- ). Dit betekent dat alleen die rijen die het woord Saga . bevatten worden geretourneerd, maar alleen als ze niet bevatten ook Moose :

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('+Saga -Moose' IN BOOLEAN MODE)
LIMIT 3;

Resultaat:

+------------------+-------------------------------------------------------------------------------------------------+
| title            | description                                                                                     |
+------------------+-------------------------------------------------------------------------------------------------+
| AIRPLANE SIERRA  | A Touching Saga of a Hunter And a Butler who must Discover a Butler in A Jet Boat               |
| ALASKA PHANTOM   | A Fanciful Saga of a Hunter And a Pastry Chef who must Vanquish a Boy in Australia              |
| ARMY FLINTSTONES | A Boring Saga of a Database Administrator And a Womanizer who must Battle a Waitress in Nigeria |
+------------------+-------------------------------------------------------------------------------------------------+

Het minteken wordt gebruikt om resultaten uit te sluiten die anders zouden worden geretourneerd. Daarom, als al onze zoekwoorden worden voorafgegaan door een minteken, wordt een lege set geretourneerd.

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('-Saga -Moose' IN BOOLEAN MODE)
LIMIT 3;

Resultaat:

Empty set (0.00 sec)

Er zijn veel meer operators die kunnen worden gebruikt bij booleaanse zoekopdrachten, zoals ~ , < , > , * , en meer. Raadpleeg de MySQL-documentatie voor Booleaanse zoekopdrachten in volledige tekst voor meer gedetailleerde informatie over het gebruik van de booleaanse modus.

Voorbeeld 9 – Met blinde zoekopdracht-uitbreiding

U kunt de WITH QUERY EXPANSION . gebruiken of de IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION modifiers om blinde query-uitbreiding uit te voeren. Dit kan handig zijn wanneer de zoekterm erg kort is en de geretourneerde resultaten mogelijk te smal zijn (waardoor mogelijk relevante documenten worden uitgesloten).

Uitbreiding van zoekopdrachten kan de zoekopdracht verbreden door rijen terug te geven die anders niet zouden worden geretourneerd. In het bijzonder, als een niet-overeenkomende rij woorden bevat die ook in een overeenkomende rij staan, kan die niet-overeenkomende rij een overeenkomende rij worden. Met andere woorden, een niet-overeenkomende rij kan nog steeds worden geretourneerd, simpelweg omdat deze andere woorden deelt met een overeenkomende rij.

Om te demonstreren, hier is een normale zoekopdracht zonder zoekopdracht uitbreiding:

SELECT AlbumId, AlbumName
FROM Albums
WHERE MATCH(AlbumName) AGAINST('Blue' IN NATURAL LANGUAGE MODE);

Resultaat:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|      13 | Blue Night |
+---------+------------+

Ik heb expliciet vermeld IN NATURAL LANGUAGE MODE maar dit is de standaardmodus, dus ik had deze modifier ook kunnen weglaten als ik daarvoor had gekozen.

En hier is dezelfde zoekopdracht met zoekopdracht uitbreiding:

SELECT AlbumId, AlbumName
FROM Albums
WHERE MATCH(AlbumName) AGAINST('Blue' WITH QUERY EXPANSION);

Resultaat:

+---------+-----------------+
| AlbumId | AlbumName       |
+---------+-----------------+
|      13 | Blue Night      |
|      19 | All Night Wrong |
+---------+-----------------+

In dit geval worden twee resultaten geretourneerd. Merk op dat het tweede resultaat de zoekterm niet bevat (blue ). Maar het bevat wel het woord Night wat toevallig ook in het eerste resultaat staat. Dus de uitgebreide zoekopdracht acht dat goed genoeg om een ​​match te zijn.

Albumnamen zijn waarschijnlijk geen erg goede use case voor de modus voor het uitbreiden van zoekopdrachten. Een betere use case zou een zoekopdracht kunnen zijn naar bijvoorbeeld database , waar een uitgebreide zoekopdracht ook documenten kan retourneren die namen bevatten zoals MySQL , Oracle , etc, zelfs als ze niet de zin database bevatten .

Hier is nog een voorbeeld. In dit voorbeeld worden echter dubbele aanhalingstekens gebruikt om aan te geven dat de hele zoekterm aanwezig moet zijn.

Als we zoeken zonder zoekopdracht uitbreiding:

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('"Feminist And a Mad Scientist"')
LIMIT 3;

Resultaat:

+------------------+--------------------------------------------------------------------------------------------------+
| title            | description                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------+
| ACADEMY DINOSAUR | A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies |
+------------------+--------------------------------------------------------------------------------------------------+

Er wordt slechts één resultaat geretourneerd (het is het enige resultaat dat de hele zin bevat, precies zoals getypt).

Maar als we blinde query-uitbreiding gebruiken, gebeurt het volgende:

SELECT 
  title, 
  description
FROM film
WHERE MATCH(title, description) AGAINST('"Feminist And a Mad Scientist"' WITH QUERY EXPANSION)
LIMIT 3;

Resultaat:

+--------------------+------------------------------------------------------------------------------------------------------+
| title              | description                                                                                          |
+--------------------+------------------------------------------------------------------------------------------------------+
| ACADEMY DINOSAUR   | A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies     |
| DINOSAUR SECRETARY | A Action-Packed Drama of a Feminist And a Girl who must Reach a Robot in The Canadian Rockies        |
| VICTORY ACADEMY    | A Insightful Epistle of a Mad Scientist And a Explorer who must Challenge a Cat in The Sahara Desert |
+--------------------+------------------------------------------------------------------------------------------------------+

De eerste rij is dezelfde als toen we geen query-uitbreiding gebruikten. De query gaat dan echter en retourneert rijen die alleen delen van onze zoekterm bevatten. Dit resultaat is beperkt tot drie alleen omdat ik LIMIT 3 . heb gebruikt . De werkelijke resultaten zijn veel groter:

SELECT COUNT(*)
FROM film
WHERE MATCH(title, description) AGAINST('"Feminist And a Mad Scientist"' WITH QUERY EXPANSION);

Resultaat:

+----------+
| COUNT(*) |
+----------+
|     1000 |
+----------+

Het is heel goed mogelijk dat veel van die resultaten volledig irrelevant zijn voor de zoekterm. Daarom werkt blinde zoekopdrachtuitbreiding meestal het beste voor kortere zoektermen.

Zie de MySQL-documentatie:Full-Text Searches with Query Expansion voor meer informatie over het gebruik van blinde query-uitbreiding.


  1. Pre-UPDATE kolomwaarden retourneren met alleen SQL

  2. SQL Server:alle dagen in een datumbereik selecteren, zelfs als er enkele dagen geen gegevens zijn

  3. Mijn Select SUM-query retourneert null. Het zou 0 . moeten retourneren

  4. Hoe een kolom BIJWERKEN met een andere kolom in een andere tabel? SQL-fout:ORA-00933:SQL-opdracht niet correct beëindigd