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