Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL 5.6 Ricerca di testo completo Problema durante la ricerca della parola in PHP

Ok, finalmente l'ho capito. Sembra che io abbia già cancellato le stopword di myisam ma non quelle di innodb. È un po' più difficile da fare rispetto a myisam, ma ecco i passaggi per chiunque ne abbia bisogno:

Nel tuo /etc/my.cnf (o my.ini su Windows) aggiungi queste righe:

Crea una tabella di stopword. Ho fatto il mio in un db chiamato settings e una tabella chiamata innodb-stopwords . Non puoi semplicemente impostare innodb_ft_enable_stopword = 0 , devi creare e collegarti a una tabella.

Assicurati che la tua tabella sia innodb e aggiungi una colonna chiamata value , varchar(?), utf8_general_ci. Puoi lasciarlo vuoto o aggiungere valori alla tabella.

innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Riavvia il tuo server MySQL.

Elimina e ricrea i tuoi indici fulltext.

Se non vuoi riavviare il server, puoi impostare dinamicamente le variabili con (aggiorna anche il file cnf/ini per il prossimo riavvio del server)

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

Non vedo alcuna soluzione alternativa per ricreare l'indice... puoi farlo con un solo comando, quindi la tabella è bloccata per tutto il tempo e i tuoi utenti non ricevono errori:

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