2009-09-24 9 views
1

Actuellement je la configuration de l'index du texte intégral suivant:Création du texte intégral Recherche optimisée

texte intégral sur:

Numéro - Nom - Suffixe - Direction - Ville - Etat - ZIPCode

Select id, MATCH(Number, Name, Suffix, Direction, City, State, ZIPCode) 
AGAINST ("Test") as Relevance from test where 1, 
and MATCH(Number, Name, Suffix, Direction, City, State, ZIPCode)  
AGAINST ("+Test" IN Boolean Mode) HAVING Relevance > 0.2 

pour une adresse . Il est actuellement dans un type de DB MyISAM pour MySQL, mais je n'aime vraiment pas comment lorsque des requêtes coûteuses frappent, ils verrouillent toute la table, et plus d'un million de lignes, j'essaie d'optimiser le mieux possible.

Le passage à Innodb vous aiderait-il? Innodb prend-il en charge le type de requête que j'ai pour MyISAM? D'autres suggestions sur la façon d'optimiser cette requête et de poursuivre avec la recherche de texte intégral?

Merci!

Répondre

1

InnoDB ne prend pas en charge la recherche de texte intégral.

Une autre option serait d'utiliser Sphinx, qui est facile à installer et à accélérer.

+0

Je vais examiner cela. Y a-t-il d'autres différences notables? – Petrogad

+1

J'ai travaillé avec les recherches de texte intégral pendant un moment en essayant d'optimiser une grande application. La performance était moyenne. Nous avons fini par passer à innodb et utiliser des index supplémentaires. La performance était à peu près la même, bien que la recherche de cartes génériques complètes (par exemple, '% some%') soit TRÈS lente. Finalement, je suis passé à Sphinx et je ne regarderai jamais en arrière. Sphinx s'intègre bien avec MySQL, mais fonctionne comme un processus séparé. – jonstjohn

+0

Awesome va lui donner un tourbillon! Merci: D – Petrogad

Questions connexes