De documentos MySQL
-
+
Um sinal de mais à esquerda indica que essa palavra deve estar presente em cada linha retornada.
-
*
O asterisco serve como operador de truncamento (ou curinga). Ao contrário dos outros operadores, ele deve ser anexado à palavra a ser afetada. As palavras correspondem se começarem com a palavra que precede o operador *.
Se uma palavra for especificada com o operador de truncamento, ela não será removida de uma consulta booleana, mesmo que seja muito curta (conforme determinado na configuração ft_min_word_len) ou uma palavra de interrupção. Isso ocorre porque a palavra não é vista como muito curta ou como topword, mas como um prefixo que deve estar presente no documento na forma de uma palavra que começa com o prefixo .
No contexto:
CORRESP(...) CONTRA(...)
MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE)
significa que você está procurando por linhas em que uma palavra no name
coluna deve conter ski
, e deve começar com a palavra ski
. Do conjunto que você postou,
Dartmouth Skiway
é o único name
que está em conformidade com estes requisitos:contém a palavra ski
, e é prefixado pela palavra ski
. O outro
name
colunas, embora correspondam à primeira regra:deve conter ski
, eles não são prefixados com ski
, conforme estipulado em sua regra. A linha retornada por sua pesquisa booleana é a única com um name
coluna que contém uma palavra que contém ski
e é uma palavra prefixada por ski
. Como sugerido por ajreal, tente diminuir o
ft_min_len_word_setting
em my.cnf
. Sua pesquisa pode não apresentar os resultados esperados devido à configuração padrão. Tente reduzir para 3. ONDE coluna LIKE %text%
WHERE name LIKE "%ski%"
procura por linhas com name
colunas que contêm ski
, não importa onde a palavra ocorra.