Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1216 connectés 

  FORUM HardWare.fr
  Programmation
  ASP

  [ASP] moteur de recherche pour une base access

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASP] moteur de recherche pour une base access

n°774653
dalida
Yolanda Christina Gigliotti
Posté le 23-06-2004 à 17:54:45  profilanswer
 

Bon tout d'abord, simple :
- Comment on ordonne par pertinence bordel, genre si l'enregistrement contient les 3 mots clefs qu'on a tapé, ben il afficher en premier/enregistrement contenant deux mots clefs? J'vois même pas le début d'une piste.
- Comment surligné les mots qui ont fait que l'enregistrement est le résultats de la requêtes (donc c'est pas forcément les mots entrés exactement hein, vu que par exemple, je tiens pas compte des accents, de la fin ou début du mot, de la casse...)
- N'y a t'il pas moins lourd que ça pour tester tous les mots, comme requête sous ACCESS?  
>RechercheText est la chaîne de mot(s) clef(s) renvoyée par le formulaire, ayant subie tout un traitement la pauvre, elle est toute belle maitenant et donne pleins de bons résultats, mais c'est lourd... :sweat:  

Citation :

listecle = Split(RechercheText)," ",-1, 1)    
SQL = "SELECT links.name, links.url, links.langue, links.resume FROM links WHERE links.Valide=1"
i=0
    While i<=UBound(listmotcle)
 listmotcle(i) = trim(listmotcle(i))
if i>0 then
SQL = SQL&" AND "  
end if
SQL = SQL&" name LIKE '%"&listmotcle(i)&"%' OR links.Valide=1 AND resume LIKE '%"&listmotcle(i)&"%'"      
    i=i+1
    Wend


Message édité par dalida le 23-06-2004 à 18:02:53

---------------
90-60-90 -Guish c un homme humain, un vrai-
mood
Publicité
Posté le 23-06-2004 à 17:54:45  profilanswer
 

n°774655
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 17:56:05  profilanswer
 

impossible avec Access.
 
- Il te faut un outils de "full search", tel que tu peux en avoir avec SQL Server ou MySQL.
- Tu te fais un bête "replace" en ASP sur le résulat.
- Cf. premier point.


Message édité par Arjuna le 23-06-2004 à 17:56:51
n°774661
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 18:00:06  profilanswer
 

Pour le second point, j'utilise ça sur un site :
 


function ChangeFont(original, find, start, before, after)
 if original <> "" and find <> "" then
  strTmp = ucase(original)
  findTmp = ucase(find)
  pos = instr(start, strTmp, findTmp)
  if pos <> 0 then
   original = ChangeFont(left(original, pos - 1) & before & mid(original, pos, len(find)) & after & right(original, len(original) - ((pos - 1) + len(find))), find, pos + len(find) + len(before) + len(after), before, after)
  end if
 end if
 ChangeFont = original
end function
 
function ChangeFont2(original, find, start, before, after)
 tabfind = split(find, " " )
 for i = lbound(tabfind) to ubound(tabfind)
  original = ChangeFont(original, tabfind(i), start, before, after)
 next
 ChangeFont2 = original
end function


 
<%=ChangeFont2(rs("description" ), keyword, 1, "<b><i><font color='#AA0000'>", "</font></i></b>" )%>

n°774669
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 18:04:04  profilanswer
 

http://perso.wanadoo.fr/magicbuzz/recherche.jpg
 
 
Mais avec SQL Server et son moteur d'indexation, évidement c'est mieu foutu, on peut trier par pertinance :
 
http://perso.wanadoo.fr/magicbuzz/recherche2.jpg


Message édité par Arjuna le 23-06-2004 à 18:08:30
n°774684
dalida
Yolanda Christina Gigliotti
Posté le 23-06-2004 à 18:12:36  profilanswer
 

Oui c'est nickel ça mais , j'ai pas compris comment t'utilises la fonction que je comprends que partiellement? :whistle:  

Citation :

<%=ChangeFont2(rs("description" ), keyword, 1, "<b><i><font color='#AA0000'>", "</font></i></b>" )%>


 
merci pour ton aide si rapide  :hello:


---------------
90-60-90 -Guish c un homme humain, un vrai-
n°774687
dalida
Yolanda Christina Gigliotti
Posté le 23-06-2004 à 18:15:31  profilanswer
 

au fait j'ai pas le choix, ils veulent pas d'autre chose que leur foutue base access, pas de mysql, alors sqlserver, faut même pas espérer vu le prix [:markdavis]


---------------
90-60-90 -Guish c un homme humain, un vrai-
n°774693
dalida
Yolanda Christina Gigliotti
Posté le 23-06-2004 à 18:18:45  profilanswer
 

Citation :

<%=ChangeFont2(rs("description" ), keyword, 1, "<b><i><font color='#AA0000'>", "</font></i></b>" )%>


 
Qu'est-ce que keyword, un des mots clefs en question, la chaine entière de keyword, et le 1 il correspond à quoi?


---------------
90-60-90 -Guish c un homme humain, un vrai-
n°774819
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:15:34  profilanswer
 

la chaine entière, normalement, mes fonctions, si j'ai tout mis (c pas sur ça :D) vont découper ça en mots et s'occuper du reste ;)


Message édité par Arjuna le 23-06-2004 à 20:15:54
n°774821
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:16:23  profilanswer
 

Le 1, je sais plus, il est en dur dans ma page, donc à priori tu le laisse :D :D :D

n°774822
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:17:46  profilanswer
 

C'est bien ce que je pensais. Le 1 sert à la récusrivité, il indique où on en est dans la chaîne, donc il faut le laisser, puisque tu pars du caractère 1 pour chercher les mots ;)

mood
Publicité
Posté le 23-06-2004 à 20:17:46  profilanswer
 

n°776187
dalida
Yolanda Christina Gigliotti
Posté le 24-06-2004 à 15:40:12  profilanswer
 

snif je voudrais l'améliorer un peu et faire changer la couleur de fond en fonction de l'index du mot correspondant dans le tableau de valeur, j'y arrive pas du tout, une idée?

Citation :

ChangeFont2(RS("resume" ), Request.Form("recherche" ), 1, "<span class=resultats"&indexdumotcorrespond&">", "</span>" )


 
ce qui donnerait class=resultats1 si c'est le premier mot du tableau
class=resultat2 si c'est le second...
 
Et je crée des les styles résultat1, résultat2... dynamiquements en fonction du ubound de la liste.
 
Bon pour le moment je pourrais en mettre 5 en dur je pense que ça suffirait de toute façon>
style comme ça>

Citation :

<style type="text/css">
<!--
 
.resultats1 {
 background-color: #FFFF66;
}
.resultats2 {
 background-color: #FF6600;
}
.resultats3 {
 background-color: #33FF66;
}
.resultats4 {
 background-color: #99FF66;
}
.resultats5 {
 background-color: #FFFF66;
}
-->
 
</style>


mais impossible de récupérer l'index du tableau de chaine qui à correspondu, j'arrive pas à réecrire la fonction  pour qu'il le fasse ça doit être con pourtant [:sisicaivrai]
 
oui c du pompage de googletoolbarstyle c clair [:ddrs55]


Message édité par dalida le 24-06-2004 à 15:40:47

---------------
90-60-90 -Guish c un homme humain, un vrai-
n°776219
dalida
Yolanda Christina Gigliotti
Posté le 24-06-2004 à 15:59:17  profilanswer
 

g bidouillé ça marche mais c pas du joli :/
voilà la new fonction

Citation :

function ChangeFont2(original, find, start, before, after)  
 tabfind = split(find, " " )  
 for i = lbound(tabfind) to ubound(tabfind)  
endofspan=">"
  original = ChangeFont(original, tabfind(i), start, before&(i)&endofspan, after)  
   
 next  
 ChangeFont2 = original  
end function


 
et sa new utilisation

Citation :

ChangeFont2(RS("resume" ), Request.Form("recherche" ), 1, "<span class=resultats", "</span>" )


 
Mouais
Si quelqu'un a mieux je prends :)


---------------
90-60-90 -Guish c un homme humain, un vrai-

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASP

  [ASP] moteur de recherche pour une base access

 

Sujets relatifs
[access](RESOLU) savoir si une requête sort un résultat ou non ??[DB2] recherche en ignorant les caractères spéciaux
Gestion signets word à partir d'accessimporter un .xls dans une base access
Pb de date ASP/Oracle8iAfficher le contenu d'une Base de Donnée
[Access/VBA] Lancer du code au démarrage puis fermer la base.access sur web
Plus de sujets relatifs à : [ASP] moteur de recherche pour une base access


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR