Căutări booleene în text complet în MySQL

Rezumat: în acest tutorial, veți învăța cum să efectuați căutări booleene în text complet în MySQL. În plus, veți învăța cum să utilizați operatorii booleeni pentru a forma interogări de căutare foarte complexe.

Introducere la căutările booleene full-text MySQL

În afară de căutarea full-text în limbaj natural, MySQL acceptă o formă suplimentară de căutare full-text care se numește căutare booleană full-text. În modul boolean, MySQL caută cuvinte în loc de concept ca în căutarea în limbaj natural.

MySQL vă permite să efectuați o căutare full-text bazată pe interogări foarte complexe în modul boolean împreună cu operatorii booleeni. Acesta este motivul pentru care căutarea full-text în modul boolean este potrivită pentru utilizatorii experimentați.

Pentru a efectua o căutare full-text în modul boolean, se utilizează modificatorul IN BOOLEAN MODE în expresia AGAINST. Exemplul următor vă arată cum să căutați un produs al cărui nume de produs conține cuvântul Truck.

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

mysql boolean tex caută - nume de produs cu cuvântul cheie Truck
Sunt returnate două produse ale căror nume de produs conțin cuvântul Truck.

Pentru a găsi produsul ale cărui nume de produs conțin cuvântul Truck, dar nu și rândurile care conțin Pickup , se poate utiliza operatorul boolean de excludere ( - ), care returnează rezultatul care exclude cuvântul cheie Pickup, ca în interogarea următoare:

Code language: SQL (Structured Query Language) (sql)
mysql boolean tex caută cu operatorul boolean

MySQL Boolean full-text search operators

Tabelul următor ilustrează operatorii booleeni de căutare full-text și semnificațiile acestora:

Operator Descriere
+ Include, cuvântul trebuie să fie prezent.
Exclude, cuvântul nu trebuie să fie prezent.
> Include, și crește valoarea de clasificare.
< Include, și scade valoarea de clasificare.
() Grupează cuvintele în subexpresii (permițându-le să fie incluse, excluse, clasificate și așa mai departe ca grup).
~ Înlătură valoarea de clasificare a unui cuvânt.
* Codul wildcard la sfârșitul cuvântului.
„” Define o frază (spre deosebire de o listă de cuvinte individuale, întreaga frază este comparată pentru includere sau excludere).

Exemplele următoare ilustrează modul de utilizare a operatorilor booleeni full-text în interogarea de căutare:

Pentru a căuta rânduri care conțin cel puțin unul dintre cele două cuvinte: mysql sau tutorial

‘mysql tutorial’

Pentru a căuta rânduri care conțin ambele cuvinte: mysql și tutorial

‘+mysql +tutorial’

Pentru a căuta rândurile care conțin cuvântul „mysql”, dar a pune rang mai mare pentru rândurile care conțin „tutorial”:

‘+mysql tutorial’

Pentru a căuta rândurile care conțin cuvântul „mysql”, dar nu și „tutorial”

‘+mysql -tutorial’

Pentru a căuta rândurile care conțin cuvântul „mysql” și a acorda un rang mai mic rândului dacă acesta conține cuvântul „tutorial”.

‘+mysql ~tutorial’

Pentru a căuta rândurile care conțin cuvintele „mysql” și „tutorial”, sau „mysql” și „training” în orice ordine, dar pune rândurile care conțin „mysql tutorial” mai sus decât „mysql training”.

‘+mysql +(>tutorial <training)’

Pentru a găsi rândurile care conțin cuvinte care încep cu „my”, cum ar fi „mysql”, „mydatabase”, etc., folosiți următoarele:

‘my*’

Caracteristici principale ale căutării booleene a textului complet MySQL

  • MySQL nu sortează automat rândurile după relevanță în ordine descrescătoare în căutarea booleană a textului complet.
  • Pentru a efectua interogări booleene, tabelele InnoDB necesită ca toate coloanele expresiei MATCH să aibă un index FULLTEXT. Observați că tabelele MyISAM nu necesită acest lucru, deși căutarea este destul de lentă.
  • MySQL nu acceptă mai mulți operatori booleeni într-o interogare de căutare în tabelele InnoDB, de exemplu, ‘++mysql’. MySQL va returna o eroare dacă faceți acest lucru. Cu toate acestea, MyISAM se comportă diferit. Acesta ignoră ceilalți operatori și utilizează operatorul care este cel mai apropiat de cuvântul de căutare, de exemplu, ‘+-mysql’ va deveni ‘-mysql’.
  • Cercetarea full-text din InnoDB nu acceptă semnul plus (+) sau minus (-) la sfârșit. Suportă doar semnul plus sau minus din față. MySQL va raporta o eroare dacă cuvântul de căutare este ‘mysql+’ sau ‘mysql-‘. În plus, următoarele semne plus sau minus de la început cu wildcard nu sunt valide: +*, +-
  • Semnalul de 50% înseamnă că dacă un cuvânt apare în mai mult de 50% din rânduri, MySQL îl va ignora în rezultatul căutării.

În acest tutorial, ați învățat cum să efectuați căutări booleene MySQL full-text cu mulți operatori booleeni utili.

  • A fost util acest tutorial?
  • DaNu