Boolske fuldtekstsøgninger i MySQL

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)

mysql boolske tex-søgninger - produktnavn med nøgleordet Truck
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 tex-søgninger med Boolsk operatør

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 et FULLTEXT 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