Index full text sur champs multiples [MySQL] - SQL/NoSQL - Programmation
MarshPosté le 19-02-2007 à 23:46:41
Bonjour et merci de me lire,
Je développe actuellement un projet personnel (web). Celui-ci aura une partie moteur de recherche. Je souhaite laisser le choix aux internautes de faire leur recherche dans la table du contenu sur les champs titre, mots clefs et descriptifs. Ils pourront choisir entre 2 types de recherche : Soit sur tous les champs (titre, mots clefs, descriptif). Soit sur un seul des champs au choix.
Si je n'avais eu que le 1er type de recherche, il aurait fallu faire un index de cette manière : CREATE FULLTEXT INDEX index_recherche ON ma_table (titre, motsClefs, descriptif);
Mais avec le second cas possible, je dois plutôt créer 3 index : CREATE FULLTEXT INDEX index_titre ON ma_table (titre); CREATE FULLTEXT INDEX index_motsClefs ON ma_table (motsClefs); CREATE FULLTEXT INDEX index_descriptif ON ma_table (descriptif);
Question (un peu newbies en index je dois dire) : En créant mes 3 index (second cas), mes requêtes faites avec le 1er cas utiliseront-elles les index ? Ou dois-je créer un 4ème index : CREATE FULLTEXT INDEX index_recherche ON ma_table (titre, motsClefs, descriptif); ??
Sinon comment dois-je faire ? (créer seulement les 3 index du second cas et lorsque l'internaute fait une recherche du 1er cas, faire 3 requêtes dans une table temporaire + une requête sur les résultats ? Ou un truc comme ça ?)
Marsh Posté le 19-02-2007 à 23:46:41
Bonjour et merci de me lire,
Je développe actuellement un projet personnel (web). Celui-ci aura une partie moteur de recherche.
Je souhaite laisser le choix aux internautes de faire leur recherche dans la table du contenu sur les champs titre, mots clefs et descriptifs.
Ils pourront choisir entre 2 types de recherche :
Soit sur tous les champs (titre, mots clefs, descriptif).
Soit sur un seul des champs au choix.
Si je n'avais eu que le 1er type de recherche, il aurait fallu faire un index de cette manière :
CREATE FULLTEXT INDEX index_recherche ON ma_table (titre, motsClefs, descriptif);
Mais avec le second cas possible, je dois plutôt créer 3 index :
CREATE FULLTEXT INDEX index_titre ON ma_table (titre);
CREATE FULLTEXT INDEX index_motsClefs ON ma_table (motsClefs);
CREATE FULLTEXT INDEX index_descriptif ON ma_table (descriptif);
Question (un peu newbies en index je dois dire) :
En créant mes 3 index (second cas), mes requêtes faites avec le 1er cas utiliseront-elles les index ?
Ou dois-je créer un 4ème index : CREATE FULLTEXT INDEX index_recherche ON ma_table (titre, motsClefs, descriptif); ??
Sinon comment dois-je faire ? (créer seulement les 3 index du second cas et lorsque l'internaute fait une recherche du 1er cas, faire 3 requêtes dans une table temporaire + une requête sur les résultats ? Ou un truc comme ça ?)
Merci pour votre aide.