Im booleschen Modus wird das Erfordernis, dass Strings vorhanden sind (anstatt nur eine höhere Punktzahl zu erzielen), mit +
ausgeführt . Präfixabgleich erfolgt mit einem endenden *
. Dies scheint das zu sein, was Sie wollen, also suchen Sie nach:
+John* +S*
+John* +Smith*
+Smith* +J*
+Jo* +S*
Beachten Sie, dass Volltextindizes Ihnen nicht helfen können, „irgendwo in einem Wort“ zu suchen. also etwas wie *mith*
scheitern:Sie sollen ab Zeichen 1 in einem Index passen.
Wenn Sie sie auch nach Übereinstimmungswerten sortieren möchten und beispielsweise John Smith
benötigen vorher Johnny Smithson
, würden Sie Folgendes tun:
SELECT * FROM user
WHERE MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE)
ORDER BY MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE) DESC;
Was Sie sehen werden, bringt Sie nirgendwohin, wenn Sie nicht alle Wörter>=ft_min_word_len
hinzufügen nochmal separat:
+John* +S* John
+John* +Smith* John Smith
+Smith* +J* Smith
+Jo* +S*
Für das letzte sind beide