От документи на MySQL
-
+Водещ знак плюс показва, че тази дума трябва да присъства във всеки ред, който се връща. -
*Звездичката служи като оператор за съкращаване (или заместващ знак). За разлика от другите оператори, тя трябва да бъде добавена към думата, за да бъде засегната. Думите съвпадат, ако започват с думата, предхождаща *оператора.Ако дадена дума е посочена с оператора за съкращаване, тя не се премахва от булева заявка, дори ако е твърде кратка (както е определено от настройката ft_min_word_len) или спираща дума. Това се случва, защото думата не се разглежда като твърде кратка или като атоп дума, а като префикс, който трябва да присъства в документа под формата на дума, която започва с префикса .
В контекст:
МАЧ(...) СРЕЩУ(...)
MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE) означава, че търсите редове, където има дума в name колона трябва да съдържа ski , и трябва да започне с думата ski .
От комплекта, който сте публикували, Dartmouth Skiway е единственото name който отговаря на тези изисквания:съдържа думата ski , и има префикс с думата ski .
Другото name колони, въпреки че отговарят на първото правило:трябва да съдържа ski , те не са с префикс с ski , както е посочено във вашето правило. Редът, върнат от вашето булево търсене, е единственият с name колона, която съдържа дума, която и двете съдържат ski и е дума с префикс от ski .
Както е предложено от ajreal, опитайте да намалите ft_min_len_word_setting в my.cnf . Вашето търсене може да не успее да даде резултатите, които очаквате поради настройката по подразбиране. Опитайте да го намалите до 3.
Колона WHERE LIKE %text%
WHERE name LIKE "%ski%" търси редове с name колони, които съдържат ski , независимо къде се среща думата.