Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL MySQL Full Text Search Mystery

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java MYSQL/JDBC заявка връща остарели данни от кешираната връзка

  2. SELECT COUNT във връзка един към много

  3. Модел на стойността на атрибута на обект – алтернатива на производителността?

  4. Сложната MySQL заявка дава неправилни резултати

  5. Ежедневно архивиране на база данни с помощта на Cron Job