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)
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 -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
-lausekkeenMATCH
sarakkeilla onFULLTEXT
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