Moteur de recherche j'ai besoin d'une aide

cs_ALEXZ Messages postés 2 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 13 mai 2002 - 26 avril 2002 à 17:03
dirthangel1 Messages postés 18 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 20 septembre 2005 - 24 août 2005 à 03:54
Salut je suis un amateur qui a repris le super code source du moteur de recherche.
J'ai essayé de l'amerliorer mais il me manque un petit truc....

J'aimerai que le moteur cherche par ordre :

1. tous les mots
2. puis tous les mots moins un
jusqu'a ce qui reste n-4 mots

exemple 6 mots dans la recherche : le moteur cherche si il existe 6 mots sur 6 en les sulignant en rouge

Puis 5 mots sur 6 et me donne toutes les lignes ou il trouve 5 mots sur les 6 etc jusqu'a deux mot

Est ce qu'un génie de l'informatique pourrait m'aider à optimiser mon code qui reste très basic

<%@LANGUAGE= "VBSCRIPT"%>

<html>

<head></head>


<form method="post" name="formabb" action="recherche.asp">

" cols="60" size="58">




</form>

<% search=request("search")

%>
<%
if search<>"" then
MOTS=replace(search,"+"," ")

'---- Fonction qui supprime les espaces en trop dans une phrase ----
Function DelSpace(Chaine)
Dim ChaineCopy, i, NbrCarToEnd, Part1, Part2, alex
ChaineCopy = LTrim(Chaine)
ChaineCopy = RTrim(ChaineCopy)
i = InStr(1, ChaineCopy, " ")
While i <> 0
NbrCarToEnd = Len(ChaineCopy) - (i - 1)
Part1 = Mid(ChaineCopy, 1, i)
Part2 = Mid(ChaineCopy, i + 2, NbrCarToEnd)
ChaineCopy = Part1 & Part2
i = InStr(1, ChaineCopy, " ")
Wend
DelSpace = ChaineCopy
End Function

'---- Fonction qui compte les mots ----
Function CompteMOTS(Chaine)
Dim NbrSPACE,I
NbrSPACE=0
For I=1 To Len(Chaine)
If Mid(Chaine,I,1)=" " Then
NbrSPACE=NbrSPACE+1
End If
Next
If NbrSPACE=0 Then
CompteMOTS=1
Else
CompteMOTS=NbrSPACE+1
End If
End Function

MOTS=DelSpace(MOTS)
NbrMOTS=CompteMOTS(MOTS)
ReDim MOTSarr(NbrMOTS)
CopyMOTS=MOTS

'---- Stocke tous les mots dans un array ----
For i=1 To NbrMOTS
CopyMOTS=DelSpace(CopyMOTS)
If InStr(1,CopyMOTS," ")=0 And Len(CopyMOTS)>0 Then
MOTSarr(i)=DelSpace(Mid(CopyMOTS,1,Len(CopyMOTS)))
CopyMOTS=""
Else
MOTSarr(i)=DelSpace(Mid(CopyMOTS,1,InStr(1,CopyMOTS," ")))
CopyMOTS=Mid(CopyMOTS,InStr(1,CopyMOTS," "),Len(CopyMOTS))
End If
Next


%>
<% cooksrch=request("search")
if cooksrch<>"" then
' on transforme les + en espaces
search2 = REPLACE(cooksrch,"+"," ")
' on vire les espaces de début et de fin
search2 = TRIM(search2)
' on vire les double-espaces
while INSTR(search2," ") > 0
search2 = REPLACE(search2," "," ")
wend
end if%>

<%
Function notag(txt)
dim regEx,temp
Set regEx = New RegExp
regEx.Global = True
regEx.Pattern = "<[^>]+>"
temp = regEx.REPLACE(txt,"")
' supprime aussi les retours
temp = REPLACE(temp,VbCrLf," ")
' et les espaces doubles
while INSTR(temp," ") > 0
temp = REPLACE(temp," "," ")
wend
notag = temp
end function
%>



<% ' S'il y a quelque chose à chercher
if search2<>"" then
%>

<%
'Ouverture d'une connexion avec la base
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "bd1" , "" , ""


%>

<%
' Début de la requête
SQL = "SELECT * FROM QUESTION"
SQL = SQL & " WHERE [QUESTION] + [REPONSE] LIKE '%"
' on remplace les espaces de la chaîne de recherche
' par un bout de requête
espace = "%' AND [QUESTION] + [REPONSE] LIKE '%"
SQL = SQL & REPLACE(search2," ",espace)
' Fin de la requête
SQL = SQL & "%' ORDER BY [Id2] DESC"
' Lecture des fiches
Set RS = server.createobject("ADODB.Recordset")
RS.Open SQL,Conn , 3, 3
' Listing
while not RS.eof%>



[recherche.asp?id=<%=RS( ">Voir la Question<%=RS("Id2")%>] [<%= NbrMOTS%>/<%= NbrMOTS%>]


<% if NbrMOTS =1 then %>

<script language= "JavaScript"><!--
function surlign(chainea) {
var cle = new Array("lime","<%=MOTSarr(1)%>","winnn")
var reg, temp=chainea
for(i=0;i<cle.length;i++) {
reg = new RegExp(cle[i],"ig")
temp = temp.replace(reg," "+cle[i]+" ")
}
return temp
}

document.write(surlign("<% =RS("QUESTION")%>"))

//--></script>

<% else %>

<% if NbrMOTS = 2 then %>

<script language="JavaScript"><!--
function surlign(chainea) {
var cle = new Array("lime","<%=MOTSarr(1)%>","<%=MOTSarr(2)%>")
var reg, temp=chainea
for(i=0;i<cle.length;i++) {
reg = new RegExp(cle[i],"ig")
temp = temp.replace(reg," "+cle[i]+" ")
}
return temp
}

document.write(surlign("<% =RS("QUESTION")%>"))

//--></script>

<% else %>

<% if NbrMOTS = 3 then %>

<script language="JavaScript"><!--
function surlign(chainea) {
var cle = new Array("<%=MOTSarr(3)%>","<%=MOTSarr(1)%>","<%=MOTSarr(2)%>")
var reg, temp=chainea
for(i=0;i<cle.length;i++) {
reg = new RegExp(cle[i],"ig")
temp = temp.replace(reg," "+cle[i]+" ")
}
return temp
}

document.write(surlign("<% =RS("QUESTION")%>"))

//--></script>

<% else %>

<% if NbrMOTS >3 then %>

<script language= "JavaScript"><!--
function surlign(chainea) {
var cle = new Array("<%=MOTSarr(3)%>","<%=MOTSarr(1)%>","<%=MOTSarr(2)%>","<%=MOTSarr(4)%>")
var reg, temp=chainea
for(i=0;i<cle.length;i++) {
reg = new RegExp(cle[i],"ig")
temp = temp.replace(reg," "+cle[i]+" ")
}
return temp
}

document.write(surlign("<% =RS("QUESTION")%>"))

//--></script>

<% end if %>
<% end if %>
<% end if %>
<% end if %>



<%=LEFT(notag(RS("Id2")),200)%>...




<%RS.moveNext
wend
' Déconnexion
RS.close : Conn.close
end if
end if

%>



test

<%

%>








</html>

1 réponse

dirthangel1 Messages postés 18 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 20 septembre 2005
24 août 2005 à 03:54
Heu ben moi j'ai pris le code source du moteur de recherche phpdig et j'avance pas
-----------------------------------
Dirthangel
0
Rejoignez-nous