Resumé: I denne vejledning lærer du, hvordan du udfører boolske fuldtekstsøgninger i MySQL. Derudover lærer du, hvordan du bruger Boolske operatorer til at danne meget komplekse søgeforespørgsler.
Indledning til MySQL Boolske fuldtekstsøgninger i MySQL
Udover fuldtekstsøgning i naturligt sprog understøtter MySQL en yderligere form for fuldtekstsøgning, som kaldes Boolsk fuldtekstsøgning. I den boolske tilstand søger MySQL efter ord i stedet for begrebet som i den naturlige sprogsøgning.
MySQL giver dig mulighed for at udføre en fuldtekstsøgning baseret på meget komplekse forespørgsler i den boolske tilstand sammen med boolske operatorer. Derfor er fuldtekstsøgning i boolsk tilstand velegnet til erfarne brugere.
For at udføre en fuldtekstsøgning i boolsk tilstand bruger du IN BOOLEAN MODE-modifikatoren i AGAINST-udtrykket. Følgende eksempel viser, hvordan du søger efter et produkt, hvis produktnavn indeholder ordet Truck.
Code language: SQL (Structured Query Language) (sql)

To produkter, hvis produktnavne indeholder ordet Truck, returneres.
For at finde det produkt, hvis produktnavne indeholder ordet Truck, men ikke nogen rækker, der indeholder Pickup , kan du bruge den boolske operatør ekskludere ( - ), som returnerer det resultat, der ekskluderer nøgleordet Pickup, som følgende forespørgsel:
Code language: SQL (Structured Query Language) (sql)

MySQL Boolske fuldtekstsøgeoperatorer
Den følgende tabel illustrerer de boolske operatorer til fuldtekstsøgning og deres betydninger:
| Operator | Beskrivelse |
|---|---|
| + | Inkluderer, skal ordet være til stede. |
| – | Udelad, ordet må ikke være til stede. |
| > | Inkluderer, og øger rangværdien. |
| < | Inkluderer, og sænker rangværdien. |
| () | Gruppér ord i underudtryk (så de kan inkluderes, udelukkes, rangordnes osv. som en gruppe). |
| ~ | Negér et ords rangordningsværdi. |
| * | Vildtegn i slutningen af ordet. |
| “” | Definerer en sætning (i modsætning til en liste over individuelle ord, matches hele sætningen med henblik på inkludering eller eksklusion). |
De følgende eksempler illustrerer, hvordan man bruger boolske fuldtekstoperatører i søgeforespørgslen:
For at søge efter rækker, der indeholder mindst ét af de to ord: mysql eller tutorial
‘mysql tutorial’
For at søge efter rækker, der indeholder begge ord: mysql og tutorial
‘+mysql +tutorial’
For at søge efter rækker, der indeholder ordet “mysql”, men sætte den højere rang for de rækker, der indeholder “tutorial”:
‘+mysql tutorial’
For at søge efter rækker, der indeholder ordet “mysql”, men ikke “tutorial”
‘+mysql -tutorial’
For at søge efter rækker, der indeholder ordet “mysql”, og placere rækken lavere i rang, hvis den indeholder ordet “tutorial”.
‘+mysql ~tutorial’
For at søge efter rækker, der indeholder ordene “mysql” og “tutorial” eller “mysql” og “training” i en hvilken som helst rækkefølge, men placere de rækker, der indeholder “mysql tutorial”, højere end “mysql training”.
‘+mysql +(>tutorial <træning)’
For at finde rækker, der indeholder ord, der begynder med “my”, f.eks. “mysql”, “mydatabase” osv, bruger du følgende:
‘my*’
MySQL boolsk fuldtekstsøgning vigtigste funktioner
- MySQL sorterer ikke automatisk rækker efter relevans i faldende rækkefølge i boolsk fuldtekstsøgning.
- For at udføre boolske forespørgsler kræver InnoDB-tabeller, at alle kolonnerne i
MATCH-udtrykket har etFULLTEXTindeks. Bemærk, at MyISAM-tabeller ikke kræver dette, selv om søgningen er ret langsom. - MySQL understøtter ikke flere boolske operatorer på en søgeforespørgsel på InnoDB-tabeller, f.eks. MySQL returnerer en fejl, hvis du gør det. MyISAM opfører sig imidlertid anderledes. Den ignorerer andre operatører og bruger den operatør, der er tættest på søgeordet, f.eks. bliver ‘+-mysql’ til ‘-mysql’.
- InnoDB-fuldtekstsøgning understøtter ikke afsluttende plus (+) eller minus (-) tegn. Den understøtter kun forreste plus- eller minustegn. MySQL vil rapportere en fejl, hvis dit søgeord er ‘mysql+’ eller ‘mysql-‘. Desuden er følgende ledende plus- eller minustegn med wildcard ugyldige: +*, +-
- Tærsklen på 50 % betyder, at hvis et ord vises i mere end 50 % af rækkerne, vil MySQL ignorere det i søgeresultatet.
I denne vejledning har du lært, hvordan du udfører MySQL Boolske fuldtekstsøgninger med mange nyttige Boolske operatorer.
- Har denne vejledning været nyttig?
- JaNej