|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 180 ![]() |
Bonjour à tous,
Je suis totalement débutant en ASP et je dois améliorer un moteur de recherche existant et déjà en ligne depuis pas mal de temps déjà. Ce moteur fonctionne plutôt bien mais seulement si on recherche sur un seul mot ou alors sur des mots qui se suivent dans le texte recherché. Les caractères non-accentués ne sont pas pris en compte non plus... Exemples : J'ai un article qui s'intitule "Ne répondez pas au message" Si je cherche "message", OK Si je cherche "répondez", OK Si je cherche "répondez pas au message", OK Si je cherche "repondez", PAS OK Si je cherche "répondez message", PAS OK L'idéal serait de pouvoir gérer les caractères accentués et non-accentués de la même manière et de ne pas être obligé de saisir l'expression exacte de l'article pour le trouver. J'espère que c'est pas trop fouillis ce que je dis... Qqn a déjà rencontré ce problème ou sait comment le gérer ? En attendant, voici le script qui est utilisé (je pense que tout y est) Code :
cdlt. |
||
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 810 ![]() |
Bonjour,
Apparemment, c'est de l'Access. As-tu essayé comme ça ? Code :
__________________
Par principe, je ne réponds pas aux messages URGENT. Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu) |
||
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : octobre 2003 Messages : 2 886 ![]() |
Il y a plusieurs choses à faire (et ce n'est qu'une proposition):
1) Supprime les mots de moins de 4 lettres dans l'expression recherchée. Si la personne tape "Ne répondez pas au message", la recherche dois se faire sur "r*pondez" et "message". Pour ça il faut faire un split sur le caractère espace et vérifier la taille de chaque chaîne dans le tableau retourné. Code :
tabRecherche = split(request.form("recherche"), " ") "rapondez" "repondez" "répondez" "rasoiuypondez" "r8pondez" Le caractère ? ne retournera pas "rasoiuypondez", car plusieurs lettres comprises entre "r" et "pondez" 3) Choisir la bonne clause: "ou" ou "et" selon le résultat que tu souhaites. Dans une boucle tu composes ta chaine sql. A vue de nez : Code :
|
||
|
|
00
|
|
|
#5 | |
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 180 ![]() |
C'est une base Access en effet.
Franculo, merci de ta réponse mais je ne comprends pas tout... Pour le 1) Je crois comprendre qu'on crée un tableau où chaque élément contient les mots à rechercher. Mais où est-ce qu'on limite le nombre de caractères à 3 ? Pour le 2) Citation:
Pour le 3) Je comprends l'utilité de la boucle mais le "i" va être incrémenté à chaque passage sur la boucle ce qui veut dire qu'il effectuera la recherche que sur le dernier mot 'scanné'.... mais je peux me tromper A quoi sert la ligne ? merci |
|
|
|
00
|
|
|
#6 | |||||
|
Expert Confirmé
![]() Inscription : octobre 2003 Messages : 2 886 ![]() |
Je construis un tableau contenant tous les mots puis je fais juste une condition quand je le parcours
Citation:
Citation:
Code :
Citation:
|
|||||
|
|
00
|
|
|
#7 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2005 Messages : 180 ![]() |
Citation:
En fait, il faudrait une sorte de fonction qui enlève tous les accents et que la requête ne tienne pas compte si un caractère est accentué ou non. je sais qu'en PHP il y a qqchose de semblable mais en ASP... A moins que je n'aie encore compris de travers... |
||
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Inscription : octobre 2003 Messages : 2 886 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com