От документи на 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
, независимо къде се среща думата.