par
Ryle » 26 mars 2008, 12:26
Bah pour ça, ça dépend beaucoup du contexte et des choses que tu peux rechercher...
Personnellement, si je tape "boîte de chocolat", c'est plus la chaine entière que je m'attends à retrouver plutôt que l'un ou l'autre des mots... Donc on peut supposer que ton moteur de recherche propose ces différentes option : "n'importe quel mot" (pour lequel ton script fonctionne) ou "la chaine exacte" (auquel cas il suffit de remplacer ta boucle par une valeur unique, avec un simple test

). Tu peux aussi pousser le vice à "tous les mots", même boucle mais avec des AND
Pour en revenir aux articles (pronoms, conjonction, etc.), puisque c'est de là que vient le problème, une solution peut être de faire un tableau contenant ces mots usuels ( array('le', 'la', 'les', 'de', 'du', ...)) et d'utiliser array_diff() pour les supprimer de ton tableau $tab_mots avant la boucle lorsque la recherche se fait sur n'importe lequel de ces mots.
Maintenant, tu peux aussi très bien utiliser la commande "continue" dans ta boucle si le mot fait moins de 3 caractères pour passer directement au suivant sans ajouter de condition dans la requête

C'est beaucoup plus rapide à mettre en place, mais c'est aussi plus restrictif.. une fois encore, ça dépend du contexte et des termes utilisés sur ton site

Bah pour ça, ça dépend beaucoup du contexte et des choses que tu peux rechercher...
Personnellement, si je tape "boîte de chocolat", c'est plus la chaine entière que je m'attends à retrouver plutôt que l'un ou l'autre des mots... Donc on peut supposer que ton moteur de recherche propose ces différentes option : "n'importe quel mot" (pour lequel ton script fonctionne) ou "la chaine exacte" (auquel cas il suffit de remplacer ta boucle par une valeur unique, avec un simple test :)). Tu peux aussi pousser le vice à "tous les mots", même boucle mais avec des AND :)
Pour en revenir aux articles (pronoms, conjonction, etc.), puisque c'est de là que vient le problème, une solution peut être de faire un tableau contenant ces mots usuels ( array('le', 'la', 'les', 'de', 'du', ...)) et d'utiliser array_diff() pour les supprimer de ton tableau $tab_mots avant la boucle lorsque la recherche se fait sur n'importe lequel de ces mots.
Maintenant, tu peux aussi très bien utiliser la commande "continue" dans ta boucle si le mot fait moins de 3 caractères pour passer directement au suivant sans ajouter de condition dans la requête :) C'est beaucoup plus rapide à mettre en place, mais c'est aussi plus restrictif.. une fois encore, ça dépend du contexte et des termes utilisés sur ton site :)