Moteur de recherche fulltext et performances ?
Posté : 05 sept. 2008, 11:42
Salut,
je dois réaliser un moteur de recherche fulltext, et comme j'utilise MyISAM de MySQL, il n'y aurait normalement pas de problème... d'ailleurs, il n'y a aucun problème tout fonctionne bien.
Cependant, je me pose la question des performances, en effet, je fais mes tests sur un nombre réduit d'enregistrement et niveau performances ça à l'air plus que correct, mais qu'est-ce que ça va donner lorsqu'il y aura 10Mo de texte à parcourir pour la recherche.
J'ai déjà réduit le nombre de résultats de la recherche en n'autorisant pas les mots trop longs.
Par contre, je voudrais classer les résultats par pertinence et que la pertinence soit indiquer en pourcentage.
J'utilise pour ça la requête suivante :
Où $debut et $limit dépendent de la page sur laquelle on se trouve.
Ce que je voudrais en fait c'est réduire le nombre de résultats trouvés en fonction de la pertinence, si la pertinence est en dessous d'un certain seuil on arrête la recherche.
Voila en gros, seul problème : je ne sais pas comment est calculée la pertinence (entre quoi et quoi varie-t-elle ?) et donc je ne sais pas choisir la variable $seuil...
Donc est-il possible d'obtenir la pertinence directement en pourcentage ou faut-il faire autrement ?
Merci d'avance.
je dois réaliser un moteur de recherche fulltext, et comme j'utilise MyISAM de MySQL, il n'y aurait normalement pas de problème... d'ailleurs, il n'y a aucun problème tout fonctionne bien.
Cependant, je me pose la question des performances, en effet, je fais mes tests sur un nombre réduit d'enregistrement et niveau performances ça à l'air plus que correct, mais qu'est-ce que ça va donner lorsqu'il y aura 10Mo de texte à parcourir pour la recherche.
J'ai déjà réduit le nombre de résultats de la recherche en n'autorisant pas les mots trop longs.
Par contre, je voudrais classer les résultats par pertinence et que la pertinence soit indiquer en pourcentage.
J'utilise pour ça la requête suivante :
Code : Tout sélectionner
"SELECT articles.*, (MATCH (texte,titre) AGAINST ('$mots' IN BOOLEAN MODE) as pertinence FROM articles WHERE ( MATCH (texte, titre) AGAINST ('$mots' IN BOOLEAN MODE) )
HAVING pertinence > $seuil ORDER BY pertinence DESC LIMIT $debut,$limit"; Où $debut et $limit dépendent de la page sur laquelle on se trouve.
Ce que je voudrais en fait c'est réduire le nombre de résultats trouvés en fonction de la pertinence, si la pertinence est en dessous d'un certain seuil on arrête la recherche.
Voila en gros, seul problème : je ne sais pas comment est calculée la pertinence (entre quoi et quoi varie-t-elle ?) et donc je ne sais pas choisir la variable $seuil...
Donc est-il possible d'obtenir la pertinence directement en pourcentage ou faut-il faire autrement ?
Merci d'avance.