Bonjour tout le monde et merci à ceux qui me liront (et me répondront)
Je souhaite intégrer un moteur de recherche sur mon site.
Ce dernier ira chercher des résultats dans une base de donnée en fonction de ce qu'a rentré l'utilisateur.
Le champs de recherche possède 1 champ :
Mots clef : recherche dans les 4 champs de la base (recherche en match against, fonctionne super bien)
Il existe un champ de recherche avancé.
champs 1 : titre (varchar 255)
champs 2 : ISBN (varchar 255)
champs 3 : Edition (varchar 255)
champs 4 : Auteur (varchar 255)
Oh la belle table de livres![]()
Bref pour la recherche en Match Against, il existe un index en mode fulltext comprenant ces 4 champs et l'index fulltext est bien utilisé (Explain)
Par contre quand je fais une recherche avancé, on n'utilise pas match against mais on fait un WHERE auteur = "$auteur" ou WHERE auteur = "$auteur" AND ISBN = "$ISBN"
Problème : l'index n'est pas utilisé, ce qui normal....
J'ai donc crée un index pour chacun des champs... mais lorsque je fais une recherche avec 2 champs (disont titre et auteur), il est bien plus rapide d'utiliser un index comprenant ces 2 champs, j'ai donc crée un index contenant ces 2 champs.
Les recherches avec titre et auteur utilise bien l'index titre_auteur.
Mais si je pars dans cette optique, il faudrait les index suivant :
- titre
- ISBN
- Edition
- Auteur
- titre_ISBN
- titre_Edition
- titre_Auteur
- ISBN_Edition
- ISBN_Auteur
- Edition_Auteur
- titre_ISBN_Edition
- titre_ISBN_Auteur
- ISBN_Edition_Auteur
(Bref sur toutes les requetes WHERE que nous pouvons rencontrer)
Certes ca ira super vite pour les recherches mais ca devient très lourd et je ne suis pas sûr que c'est bien pour le moteur SQL.
D'autant plus que ceci a été testé sur un serveur de test et qu'avec 320Mo de données (4 Millions d'insertions, sachant qu'en prod, on fait en moyenne de 10 000 à 20 000 par jour), on a 720Mo d'index (gloups !).
Bref je n'ai pas la solution magique pour faire des recherches super méga rapide tout en ayant un fichier d'index assez petit.
Si c'est la seule solution et que pour avoir des recherches super rapide, il faut de gros index ben on passera par là mais ca étonne beaucoup de monde.
Si un pro des index pourrait me renseigne pour débloquer la situation.
Merci à lui.
Partager