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

MySQL 5.6 Проблем с пълнотекстово търсене при търсене на думата the в PHP

Добре, най-накрая разбрах това. Изглежда, че вече имах изчистени стоп думи на myisam, но не и innodb. Това е малко, но по-трудно за изпълнение, отколкото за myisam, но ето стъпките за всеки друг, който може да се нуждае от него:

Във вашия /etc/my.cnf (или my.ini на windows) добавете тези редове:

Създайте таблица със спирателни думи. Направих моята в db, наречен settings и таблица, наречена innodb-stopwords . Не можете просто да зададете innodb_ft_enable_stopword = 0 , трябва да създадете и свържете към таблица.

Уверете се, че вашата таблица е innodb и добавете колона, наречена value , varchar(?), utf8_general_ci. Можете да го оставите празен или да добавите стойности към таблицата.

innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Рестартирайте вашия mysql сървър.

Пуснете и създайте отново вашите пълнотекстови индекси.

Ако не искате да рестартирате сървъра, можете динамично да зададете променливите с (също актуализирайте файла cnf/ini за следващото рестартиране на сървъра)

--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name

Не виждам решение за пресъздаване на индекса... можете да го направите с една команда, така че таблицата да е заключена през цялото време и вашите потребители да не получават грешки:

ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете най-голямата стойност за всеки последни 7 дни

  2. MySQL „Отрязана неправилна INTEGER стойност“

  3. Tomcat6 не може да се свърже с MySql (драйверът не е получил никакви пакети от сървъра)

  4. Как да добавя първичен ключ към MySQL таблица?

  5. Можете ли да получите достъп до стойността за автоматично увеличение в MySQL в рамките на едно изявление?