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.