sql >> Databáze >  >> RDS >> Mysql

MySQL 5.6 Problém s fulltextovým vyhledáváním při hledání slova v PHP

Ok, konečně jsem na to přišel. Vypadá to, že jsem již vymazal stopwordy myisam, ale ne ty innodb. Je to trochu, ale těžší než pro myisam, ale tady jsou kroky pro každého, kdo by to mohl potřebovat:

Do svého /etc/my.cnf (nebo my.ini v systému Windows) přidejte tyto řádky:

Vytvořte tabulku ignorovaných slov. Udělal jsem svůj v db s názvem settings a tabulku nazvanou innodb-stopwords . Nemůžete jednoduše nastavit innodb_ft_enable_stopword = 0 , musíte vytvořit a propojit tabulku.

Ujistěte se, že je vaše tabulka innodb a přidejte sloupec s názvem value , varchar(?), utf8_general_ci. Můžete ji nechat prázdnou nebo do tabulky přidat hodnoty.

innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Restartujte svůj mysql server.

Přetáhněte a znovu vytvořte své fulltextové indexy.

Pokud nechcete restartovat server, můžete dynamicky nastavit proměnné pomocí (také aktualizujte soubor cnf/ini pro příští restart serveru)

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

Nevidím žádné řešení pro opětovné vytvoření indexu... můžete to však provést jedním příkazem, takže tabulka bude po celou dobu uzamčena a vaši uživatelé nebudou dostávat chyby:

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


  1. Najděte rozdíl mezi časovými razítky v sekundách v PostgreSQL

  2. Existuje způsob, jak provést INSERT...ON DUPLICATE KEY UPDATE v Zend Framework 1.5?

  3. Python Mysql, příkazy nejsou synchronizované; tento příkaz nyní nemůžete spustit

  4. MYSQL SELECT hodnost uživatele (více než x a méně než y)