cs_ALEXZ
Messages postés2Date d'inscriptionvendredi 26 avril 2002StatutMembreDernière intervention13 mai 2002
-
26 avril 2002 à 17:03
dirthangel1
Messages postés18Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention20 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
%>
<%
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
'---- 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