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 etFULLTEXT
indeks. 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