MySQL Boolean Full-Text Searches

Samenvatting: in deze tutorial leert u hoe u MySQL Boolean full-text zoekopdrachten kunt uitvoeren. Daarnaast leert u hoe u Booleaanse operatoren kunt gebruiken om zeer complexe zoekopdrachten te formuleren.

Inleiding tot MySQL Booleaans full-text zoeken

Naast het zoeken in natuurlijke taal in full-text, ondersteunt MySQL een aanvullende vorm van full-text zoeken die Booleaans full-text zoeken wordt genoemd. In de Boolean mode, MySQL zoekt naar woorden in plaats van het concept zoals in de natuurlijke taal zoeken.

MySQL stelt u in staat om een full-text search op basis van zeer complexe query’s uit te voeren in de Boolean mode samen met Boolean operatoren. Dit is de reden waarom de full-text search in Boolean mode geschikt is voor ervaren gebruikers.

Om een full-text search in de Boolean mode uit te voeren, gebruikt u de IN BOOLEAN MODE modifier in de AGAINST expressie. In het volgende voorbeeld ziet u hoe u kunt zoeken naar een product waarvan de productnaam het woord Truck bevat.

Code language: SQL (Structured Query Language) (sql)

mysql boolean tex searches - productnaam met trefwoord Truck
Twee producten waarvan de productnaam het woord Truck bevat, worden geretourneerd.

Om het product te vinden waarvan de productnamen het woord Truck bevatten, maar geen rijen die Pickup bevatten, kunt u de Booleaanse operator uitsluiten ( - ) gebruiken, die het resultaat retourneert dat het trefwoord Pickup uitsluit, zoals de volgende query:

Code language: SQL (Structured Query Language) (sql)
mysql boolean tex zoekt met Boolean operator

MySQL Boolean full-text search operators

De volgende tabel illustreert de full-text search Boolean operators en hun betekenissen:

Operator Beschrijving
+ Inclusief, het woord moet aanwezig zijn.
Exclude, het woord mag niet aanwezig zijn.
> Include, en de rangordewaarde verhogen.
< Include, en de rangordewaarde verlagen.
() Groepeer woorden in subexpressies (waardoor ze kunnen worden opgenomen, uitgesloten, gerangschikt, enzovoort als een groep).
~ Negaliseer de rangschikkingswaarde van een woord.
* Wildcard aan het eind van het woord.
“” Definieert een woordgroep (in tegenstelling tot een lijst van individuele woorden, de gehele woordgroep wordt gematcht voor insluiting of uitsluiting).

De volgende voorbeelden laten zien hoe u booleaanse full-textoperatoren in de zoekopdracht kunt gebruiken:

Om rijen te zoeken die ten minste een van de twee woorden bevatten: mysql of tutorial

‘mysql tutorial’

Om rijen te zoeken die beide woorden bevatten: mysql en tutorial

‘+mysql +tutorial’

Om te zoeken naar rijen die het woord “mysql” bevatten, maar de hogere rang te zetten voor de rijen die “tutorial” bevatten:

‘+mysql tutorial’

Om te zoeken naar rijen die het woord “mysql” bevatten, maar niet “tutorial”

‘+mysql -tutorial’

Om te zoeken naar rijen die het woord “mysql” bevatten en de rij lager te rangschikken als deze het woord “tutorial” bevat.

‘+mysql ~tutorial’

Om te zoeken naar rijen die de woorden “mysql” en “tutorial” bevatten, of “mysql” en “training” in welke volgorde dan ook, maar zet de rijen die “mysql tutorial” bevatten hoger dan “mysql training”.

‘+mysql +(>tutorial <training)’

Om rijen te vinden die woorden bevatten die met “my” beginnen, zoals “mysql”, “mydatabase”, enz, gebruikt u het volgende:

‘my*’

MySQL boolean full-text search main features

  • MySQL sorteert rijen niet automatisch op relevantie in aflopende volgorde bij Boolean full-text search.
  • Om Boolean queries uit te voeren, vereisen InnoDB tabellen dat alle kolommen van de MATCH expressie een FULLTEXT index heeft. Merk op dat MyISAM tabellen dit niet vereisen, hoewel het zoeken vrij traag is.
  • MySQL ondersteunt niet meerdere Booleaanse operatoren op een zoekopdracht op InnoDB tabellen b.v., ‘++mysql’. MySQL zal een fout teruggeven als u dat doet. MyISAM gedraagt zich echter anders. Het negeert andere operatoren en gebruikt de operator die het dichtst bij het zoekwoord ligt, bijvoorbeeld, ‘+-mysql’ wordt ‘-mysql’.
  • InnoDB full-text zoeken ondersteunt geen achterlopende plus (+) of min (-) teken. Het ondersteunt alleen leidende plus of min tekens. MySQL zal een fout melden als uw zoekwoord ‘mysql+’ of ‘mysql-‘ is. Bovendien, de volgende leidende plus of min met wildcard zijn ongeldig: +*, +-
  • De 50% drempel betekent dat als een woord in meer dan 50% van de rijen voorkomt, MySQL het zal negeren in het zoekresultaat.

In deze tutorial heeft u geleerd hoe u MySQL Boolean full-text zoekopdrachten uitvoert met vele nuttige Boolean operators.

  • Was deze tutorial nuttig?
  • JaNee