2017-08-07 3 views
0

J'ai une requête qui doit retourner 1 résultatRecherche plein texte MySQL Un personnage ne fonctionne qu'avec MyISAM?

SELECT * FROM 
    `catalogsearch_fulltext_scope1` AS `search_index` 
WHERE 
    (MATCH (data_index) AGAINST ('+Product +Set +b' IN BOOLEAN MODE)); 

Si le moteur de table est MyISAM, il fonctionne.
Mais si je change la table en innodb, elle ne retourne rien.
Le problème est causé par la recherche +b

je show variables like 'ft_min%' pour vérifier la valeur est 1.

Comme le système est Magento 2.1, je ne suis pas idée est-il un problème si je change le moteur par défaut. Comment puis-je obtenir le résultat si la condition de recherche inclut 1 caractère dans innodb?

Répondre

1

ft_min_word_len est à MyISAM;
innodb_ft_min_token_size est pour InnoDB.

Lors du changement, assurez-vous de reconstruire tous les index FULLTEXT. Utilisez OPTIMIZE TABLE ou ALTER TABLE.

+0

Merci. J'ai mis à jour 'innodb_ft_min_token_size' à 1 et redémarrer la base de données. Ensuite, 'ALTER TABLE abc MOTEUR = « InnoDB »,', mais fonctionne toujours pas InnoDB – user631607

+0

je 'variables' show pour vérifier' innodb_ft_min_token_size' = 1 – user631607

+0

Faites plus de la moitié des lignes ont le mot « b » en eux? –