В булев режим, изискването на низове да присъстват (вместо просто да се постига по-висок резултат), се извършва с +
. съвпадението на префикса се извършва с край *
. Изглежда това е, което искате, така че потърсете:
+John* +S*
+John* +Smith*
+Smith* +J*
+Jo* +S*
Имайте предвид, че индексите с пълен текст не могат да ви помогнат да търсите „навсякъде в една дума“. така че нещо като *mith*
е задължително да се провали:те са предназначени да съвпадат от знак 1 в индекс.
Ако искате също да ги подредите по стойности на съвпадение и например имате нужда от John Smith
преди Johnny Smithson
, бихте направили това:
SELECT * FROM user
WHERE MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE)
ORDER BY MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE) DESC;
Което ще видите, няма да ви отведе до никъде, освен ако не добавите всички думи>=ft_min_word_len
отново отделно:
+John* +S* John
+John* +Smith* John Smith
+Smith* +J* Smith
+Jo* +S*
За последния и двата са <4 знака по подразбиране, така че не можем да добавим параметри за сортиране за това в mysql по подразбиране, но можете да зададете ft_min_world_len
друго е желано.