Från MySQL-dokument
-
+
Ett inledande plustecken anger att detta ord måste finnas på varje rad som returneras. -
*
Asterisken fungerar som trunkeringsoperatorn (eller jokertecken). Till skillnad från de andra operatorerna bör den läggas till i ordet som ska påverkas. Ord matchar om de börjar med ordet som föregår *operatorn.Om ett ord anges med trunkeringsoperatorn tas det inte bort från en boolesk fråga, även om det är för kort (som bestämt från inställningen ft_min_word_len) eller ett stoppord. Detta beror på att ordet inte ses som för kort eller astopord, utan som ett prefix som måste finnas i dokumentet i form av ett ord som börjar med prefixet .
I sammanhanget:
MATCH(...) MOT(...)
MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE)
betyder att du söker efter rader där ett ord i name
kolumnen måste innehålla ski
, och måste börja med ordet ski
.
Från setet du har lagt upp, Dartmouth Skiway
är det enda name
som uppfyller dessa krav:den innehåller ordet ski
, och har ordet ski
som prefix .
Det andra name
kolumner, även om de matchar den första regeln:måste innehålla ski
, de har inte prefix med ski
, som föreskrivs i din regel. Raden som returneras av din booleska sökning är den enda med ett name
kolumn som innehåller ett ord som båda innehåller ski
och är ett ord med prefix av ski
.
Som föreslagits av ajreal, försök att minska ft_min_len_word_setting
i my.cnf
. Din sökning kanske inte ger de resultat du förväntar dig på grund av standardinställningen. Försök att minska den till 3.
WHERE kolumn LIKE %text%
WHERE name LIKE "%ski%"
söker efter rader med name
kolumner som innehåller ski
, oavsett var ordet förekommer.