Da Documenti MySQL
-
+
Un segno più iniziale indica che questa parola deve essere presente in ogni riga restituita. -
*
L'asterisco funge da operatore di troncamento (o carattere jolly). A differenza degli altri operatori, dovrebbe essere aggiunto alla parola interessata. Le parole corrispondono se iniziano con la parola che precede l'operatore *.Se una parola viene specificata con l'operatore di troncamento, non viene eliminata da una query booleana, anche se è troppo breve (come determinato dall'impostazione ft_min_word_len) o stopword. Ciò accade perché la parola non è vista come una parola troppo breve o come una stopword, ma come un prefisso che deve essere presente nel documento sotto forma di una parola che inizia con il prefisso .
Nel contesto:
PARTITA(...) CONTRO(...)
MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE)
significa che stai cercando righe in cui una parola nel name
colonna deve contenere ski
e deve iniziare con la parola ski
.
Dal set che hai pubblicato, Dartmouth Skiway
è l'unico name
conforme a questi requisiti:contiene la parola ski
, ed è preceduto dalla parola ski
.
L'altro name
colonne, anche se corrispondono alla prima regola:deve contenere ski
, non sono preceduti da ski
, come previsto dalla tua regola. La riga restituita dalla tua ricerca booleana è l'unica con un name
colonna che contiene una parola che contiene ski
ed è una parola prefissata di ski
.
Come suggerito da ajreal, prova a ridurre ft_min_len_word_setting
in my.cnf
. La tua ricerca potrebbe non riuscire a ottenere i risultati che ti aspetti a causa dell'impostazione predefinita. Prova a ridurlo a 3.
colonna WHERE LIKE %text%
WHERE name LIKE "%ski%"
cerca le righe con name
colonne che contengono ski
, non importa dove ricorre la parola.