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

MySQL 5.6 Full Text Search Problem ved søgning efter ordet i PHP

Ok, jeg fandt endelig ud af det. Det ser ud til, at jeg allerede havde ryddet myisam-stopordene, men ikke de innodb. Det er lidt, men sværere at gøre end for myisam, men her er trinene for alle andre, der måske har brug for det:

Tilføj disse linjer i din /etc/my.cnf (eller my.ini på Windows):

Opret en stopordstabel. Jeg lavede min i en db kaldet settings og en tabel kaldet innodb-stopwords . Du kan ikke bare indstille innodb_ft_enable_stopword = 0 , skal du oprette og linke til en tabel.

Sørg for, at din tabel er innodb, og tilføj en kolonne kaldet value , varchar(?), utf8_general_ci. Du kan lade den stå tom eller tilføje værdier til tabellen.

innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Genstart din mysql-server.

Drop og genskab dine fuldtekstindekser.

Hvis du ikke vil genstarte serveren, kan du dynamisk indstille variablerne med (opdater også cnf/ini-filen til næste servergenstart)

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

Jeg kan ikke se nogen løsning til at genskabe indekset... du kan dog gøre det i én kommando, så tabellen er låst hele tiden, og dine brugere ikke får fejl:

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


  1. Find ud af, om værdien er nummer i MySQL

  2. Eksisterer kolonnen ikke?

  3. Fatal fejl:Kald til udefineret funktion session_register()

  4. Er normalt MySql-indeks påkrævet, når vi har Composite-indeks