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)
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)
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 indiceFULLTEXT
. 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