MySQL Boolean kokotekstihaut

Yhteenveto: Tässä opetusohjelmassa opit suorittamaan MySQL Boolean kokotekstihakuja. Lisäksi opit käyttämään Boolen operaattoreita hyvin monimutkaisten hakukyselyjen muodostamiseen.

Esittely MySQL:n Boolen kokotekstihakuihin

Luonnollisen kielen kokotekstihakujen lisäksi MySQL tukee kokotekstihakujen lisämuotoa, jota kutsutaan Boolen kokotekstihauksi. Boolen tilassa MySQL etsii sanoja käsitteen sijasta kuten luonnollisen kielen haussa.

MySQL:n avulla voit tehdä Boolen tilassa Boolen operaattoreiden kanssa hyvin monimutkaisiin kyselyihin perustuvan kokotekstihaun. Tämän vuoksi kokotekstihaku Boolen tilassa sopii kokeneille käyttäjille.

Toteuttaaksesi kokotekstihaun Boolen tilassa, käytät IN BOOLEAN MODE-modifikaattoria AGAINST-lausekkeessa. Seuraavassa esimerkissä näytetään, miten haetaan tuotetta, jonka tuotenimi sisältää sanan Truck.

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

mysql boolean tex searches - product name with keyword Truck
Palautetaan kaksi tuotetta, joiden tuotenimi sisältää sanan Truck.

Tietääksesi tuotteen, jonka tuotenimet sisältävät sanan Truck, mutta et yhtään riviä, joka sisältää sanan Pickup , voit käyttää exclude Boolean -operaattoria ( - ), joka palauttaa tuloksen, joka sulkee pois avainsanan Pickup, kuten seuraavassa kyselyssä:

Code language: SQL (Structured Query Language) (sql)
mysql boolean tex hakee Boolean-operaattorilla

MysQL Boolean -kokotekstihaun operaattorit

Seuraavassa taulukossa havainnollistetaan kokotekstihaun Boolean-operaattorit ja niiden merkitykset:

Operaattori Kuvaus
+ Sisällytä, sanan on oltava läsnä.
Exclude, sana ei saa esiintyä.
> Include, and increase ranking value.
< Include, and decrease the ranking value.
() Ryhmittää sanoja alilausekkeiksi (jolloin ne voidaan sisällyttää, sulkea pois, asettaa paremmuusjärjestykseen jne. ryhmänä).
~ Negaloi sanan paremmuusjärjestysarvo.
* Wildcard sanan lopussa.
”” Määrittää lauseen (yksittäisten sanojen luettelon sijasta koko lause sovitetaan mukaan tai pois).

Seuraavat esimerkit havainnollistavat boolen kokotekstioperaattoreiden käyttöä hakukyselyssä:

Etsitään rivejä, jotka sisältävät vähintään toisen kahdesta sanasta: mysql tai opetusohjelma

’mysql opetusohjelma’

Etsitään rivejä, jotka sisältävät molemmat sanat:

’+mysql +tutorial’

Haetaan rivejä, jotka sisältävät sanan ”mysql”, mutta asetetaan korkeampi sijoitus riveille, jotka sisältävät sanan ”tutorial”:

’+mysql tutorial’

Haetaan rivejä, jotka sisältävät sanan ”mysql” mutta eivät ”tutorial”

’+mysql -tutorial’

Haetaan rivejä, jotka sisältävät sanan ”mysql” ja asetetaan rivi alempaan paremmuusjärjestykseen, jos se sisältää sanan ”tutorial”.

’+mysql ~tutorial’

Hakemaan rivejä, jotka sisältävät sanat ”mysql” ja ”tutorial” tai ”mysql” ja ”training” missä tahansa järjestyksessä, mutta sijoittamaan rivit, jotka sisältävät sanan ”mysql tutorial” korkeammalle kuin sanan ”mysql training”.

’+mysql +(>tutorial <training)’

Etsiäksesi rivejä, jotka sisältävät ”my”-alkuisia sanoja, kuten ”mysql”, ”mydatabase” jne, käytät seuraavaa:

’my*’

MySQL:n Boolen kokotekstihaun pääominaisuudet

  • MySQL ei lajittele automaattisesti rivejä merkityksellisyyden mukaan alenevaan järjestykseen Boolen kokotekstihaun yhteydessä.
  • Boolen kyselyjen suorittamiseksi InnoDB-taulukot vaativat, että kaikilla MATCH-lausekkeen MATCH sarakkeilla on FULLTEXT indeksi. Huomaa, että MyISAM-taulukot eivät vaadi tätä, vaikka haku onkin melko hidas.
  • MySQL ei tue useita Boolen operaattoreita hakukyselyssä InnoDB-taulukoissa esim. ’++mysql’. MySQL palauttaa virheilmoituksen, jos teet niin. MyISAM käyttäytyy kuitenkin eri tavalla. Se jättää muut operaattorit huomiotta ja käyttää hakusanaa lähinnä olevaa operaattoria, esimerkiksi ’+-mysql’ muuttuu ’-mysql’ksi.
  • InnoDB:n kokotekstihaku ei tue perässä olevaa plus- (+) tai miinusmerkkiä (-). Se tukee vain etummaista plus- tai miinusmerkkiä. MySQL ilmoittaa virheestä, jos hakusana on ’mysql+’ tai ’mysql-’. Lisäksi seuraavat johtavat plus- tai miinusmerkit jokerimerkin kanssa ovat virheellisiä: +*, +-
  • 50 %:n kynnysarvo tarkoittaa, että jos sana esiintyy yli 50 %:ssa riveistä, MySQL jättää sen huomioimatta hakutuloksessa.

Tässä opetusohjelmassa olet oppinut suorittamaan MySQL:n Boolen kokotekstihakuja monien käyttökelpoisten Boolen operaattoreiden avulla.

  • Auttaako tämä opetusohjelma?
  • KylläEi