MySQL Boolean Full-Text Searches

Sommario: in questo tutorial, imparerai come eseguire ricerche booleane MySQL full-text. Inoltre, imparerai come usare gli operatori booleani per formare query di ricerca molto complesse.

Introduzione alle ricerche booleane MySQL full-text

Oltre alla ricerca full-text in linguaggio naturale, MySQL supporta un’ulteriore forma di ricerca full-text che è chiamata ricerca full-text booleana. Nel modo booleano, MySQL cerca le parole invece del concetto come nella ricerca in linguaggio naturale.

MySQL permette di eseguire una ricerca full-text basata su query molto complesse nel modo booleano insieme agli operatori booleani. Ecco perché la ricerca full-text in modalità booleana è adatta agli utenti esperti.

Per eseguire una ricerca full-text in modalità booleana, si usa il modificatore IN BOOLEAN MODE nell’espressione AGAINST. L’esempio seguente mostra come cercare un prodotto il cui nome contiene la parola Truck.

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

ricerche booleaneysql tex - nome prodotto con parola chiave Truck
Vengono restituiti due prodotti il cui nome contiene la parola Truck.

Per trovare il prodotto il cui nome contiene la parola Truck ma non le righe che contengono Pickup , si può usare l’operatore booleano di esclusione ( - ), che restituisce il risultato che esclude la parola chiave Pickup come la seguente query:

Code language: SQL (Structured Query Language) (sql)
mysql boolean tex cerca con l'operatore booleano

Operatori di ricerca booleana full-text MySQL

La seguente tabella illustra gli operatori booleani di ricerca full-text e i loro significati:

Operatore Descrizione
+ Include, la parola deve essere presente.
Escludere, la parola non deve essere presente.
> Includere, e aumentare il valore di classifica.
< Includere, e diminuire il valore di classifica.
() Raggruppa le parole in sottoespressioni (permettendo loro di essere incluse, escluse, classificate, e così via come un gruppo).
~ Negare il valore di classificazione di una parola.
* Cartellino alla fine della parola.
“” Definisce una frase (invece di una lista di parole singole, l’intera frase viene abbinata per l’inclusione o l’esclusione).

I seguenti esempi illustrano come usare gli operatori booleani full-text nella query di ricerca:

Per cercare le righe che contengono almeno una delle due parole: mysql o tutorial

‘mysql tutorial’

Per cercare le righe che contengono entrambe le parole: mysql e tutorial

‘+mysql +tutorial’

Per cercare le righe che contengono la parola “mysql”, ma mettere il rango più alto per le righe che contengono “tutorial”:

‘+mysql tutorial’

Per cercare le righe che contengono la parola “mysql” ma non “tutorial”

‘+mysql -tutorial’

Per cercare le righe che contengono la parola “mysql” e mettere un rango inferiore alla riga se contiene la parola “tutorial”.

‘+mysql ~tutorial’

Per cercare le righe che contengono le parole “mysql” e “tutorial”, o “mysql” e “training” in qualsiasi ordine, ma mettere le righe che contengono “mysql tutorial” più in alto di “mysql training”.

‘+mysql +(>tutorial <formazione)’

Per trovare le righe che contengono parole che iniziano con “my” come “mysql”, “mydatabase”, ecc, si usa quanto segue:

‘my*’

Caratteristiche principali della ricerca booleana full-text di MySQL

  • MySQL non ordina automaticamente le righe per rilevanza in ordine decrescente nella ricerca booleana full-text.
  • Per eseguire query booleane, le tabelle InnoDB richiedono che tutte le colonne dell’espressione MATCH abbiano un indice FULLTEXT. Si noti che le tabelle MyISAM non lo richiedono, anche se la ricerca è piuttosto lenta.
  • MySQL non supporta operatori booleani multipli su una query di ricerca su tabelle InnoDB, ad esempio, ‘++mysql’. MySQL restituisce un errore se lo fai. Tuttavia, MyISAM si comporta diversamente. Ignora gli altri operatori e usa l’operatore più vicino alla parola di ricerca, per esempio, ‘+-mysql’ diventerà ‘-mysql’.
  • La ricerca full-text di InnoDB non supporta il segno più (+) o meno (-) finale. Supporta solo il segno più o meno iniziale. MySQL segnalerà un errore se la parola di ricerca è ‘mysql+’ o ‘mysql-‘. Inoltre, i seguenti segni più o meno con carattere jolly non sono validi: +*, +-
  • La soglia del 50% significa che se una parola appare in più del 50% delle righe, MySQL la ignorerà nel risultato della ricerca.

In questo tutorial, hai imparato come eseguire ricerche booleane MySQL full-text con molti utili operatori booleani.

  • Questo tutorial è stato utile?
  • SìNo