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

Търсене със заместващи знаци в пълнотекстово търсене на MySQL

За съжаление не можете да направите това с помощта на индекс на пълен текст на MySQL. Не можете да извлечете '*nited states' незабавно от индекса, защото левите знаци са най-важната част от индекса. Все пак виможетете търсене 'United Sta*' .

// the only possible wildcard full-text search in MySQL
WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)

Пълният текст на MySQL се представя най-добре при търсене на цели думи в изречения - дори това може да е гадно на моменти. В противен случай бих предложил да използвате външна машина за пълен текст като Solr или Sphinx . Мисля, че Sphinx позволява заместващи знаци за префикси и суфикси, не съм сигурен за другите.

Можете да се върнете към LIKE на MySQL клауза, но отново изпълнение на заявки като LIKE '%nited states' или LIKE '%nited Stat%' , също ще пострада от производителността, тъй като не може да използва индекса на първите няколко знака. 'United Sta%' и 'Unit%States' са добре, тъй като индексът може да се използва срещу първата група познати знаци.

Друго доста голямо предупреждение при използване на пълнотекстово индексиране на MySQL е списъкът със стоп думи и Настройки за минимална дължина на думата . Например, в среда за споделен хостинг ще бъдете ограничени до думи, по-големи или равни на 4 знака. Така че търсенето на „Goo“, за да получите „Google“, ще се провали. Списъкът със стоп думи също така забранява често срещаните думи като 'и', 'може би' и 'отвън' - всъщност има 548 стоп-думи заедно! Отново, ако не използвате споделен хостинг, тези настройки са сравнително лесни за промяна, но ако сте, тогава ще се дразните с някои от настройките по подразбиране.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO Синтактична грешка или нарушение на достъпа:1064 при вмъкване

  2. SQL група по дата, но получавайте и дати без записи

  3. Каква е грешката Всяка извлечена таблица трябва да има свой собствен псевдоним в MySQL?

  4. Обща сума на няколко MySQL колони, съхранени в друга колона?

  5. mysql LOAD DATA INFILE с първичен ключ за автоматично увеличение