No modo booleano, exigir que as strings estejam presentes (em vez de apenas pontuar mais alto) é feito com
+ . a correspondência de prefixo é feita com uma terminação * . Isso parece ser o que você quer, então procure por:+John* +S*
+John* +Smith*
+Smith* +J*
+Jo* +S*
Observe que os índices de texto completo não podem ajudá-lo a pesquisar 'em qualquer lugar em uma palavra'. algo como
*mith* está fadado a falhar:eles devem corresponder ao caractere 1 em um índice. Se você também deseja ordená-los por valores de correspondência e, por exemplo, precisa de
John Smith antes Johnny Smithson , você faria isso: SELECT * FROM user
WHERE MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE)
ORDER BY MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE) DESC;
O que você verá não o levará a lugar nenhum, a menos que você adicione todas as palavras>=
ft_min_word_len novamente separadamente:+John* +S* John
+John* +Smith* John Smith
+Smith* +J* Smith
+Jo* +S*
Para o último, ambos são