2013-06-04 6 views
2

J'ai une table products_discription d'OpenCart. J'ai créé un nouveau moteur de recherche. Tout est ok, sauf que c'est sensible à la casse. Comment je peux le rendre insensible. J'ai lu dans Mysql Documentation Je dois changer utf8_bin à utf8_general_ci. Mais comment le faire, sans supprimer tous les index. Ce n'est pas seulement une table. Je cherche à 4 tables. Chaque table a environ 4 -5 index. Le site apporte des informations non-stop. La perte d'information n'est tout simplement pas acceptable. Je me demandais s'il y avait un moyen d'extraire les clés à supprimer, et de changer le codage. Puis ajoutez-les à nouveau avec une seule application. En tant que tel, je pense qu'il n'y aura pas de perte de données.Mysql FullText Recherche insensible à la casse

CREATE TABLE IF NOT EXISTS `product_description` (
    `product_id` int(11) NOT NULL, 
    `language_id` int(11) NOT NULL, 
    `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    `short_description` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    `description` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    `meta_description` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    `meta_keyword` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    `tag` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    `custom_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '', 
    PRIMARY KEY (`product_id`,`language_id`), 
    FULLTEXT KEY `description` (`description`), 
    FULLTEXT KEY `tag` (`tag`), 
    FULLTEXT KEY `ft_namerel` (`name`,`description`), 
    FULLTEXT KEY `name` (`name`,`short_description`,`description`,`meta_description`,`meta_keyword`,`tag`,`custom_title`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
+0

Je suppose que vous devrez recréer tous les index que vous ne voulez pas tenir compte de la casse, car les index indexent maintenant les majuscules et les minuscules différemment, mais maintenant ils doivent être indexés de la même manière pour un accès rapide. –

+0

Puis-je le faire avec 1 commande? –

Répondre

2

Avez-vous essayé la recherche en mode booléen?

+0

SELECT 'product_description'.'product_id',' product_description'.'name', 'product_description'.'' description',' product'.'model', 'product'.'image',' product'.'price', 'product'.'viewed', (SELECT AVG (évaluation) FROM avis WHERE product_id = product_description.product_id) AS' rating' FROM 'description_produit',' product' OERE 'product_description'.'produit_id' IN (SELECT' product_id' FROM 'product_description' O WH MATCH (' product_description'.'name') CONTRE ("раница" EN MODE BOOLEAN) OU MATCH ('product_description'.' 'custom_title') CONTRE (" раница "EN MODE BOOLEAN)) C'est ma rechercheQuery –

+0

le mode booléen n'a pas fonctionné pour moi sur mariadb 10.1 –

-1

J'ai supprimé toutes les clés d'index et de modifier l'encodage, après que j'ai défini de nouvelles clés d'index.