Det gäller en sökfunktion. Jag har en tabell med en kolumn som jag vill söka i, man skall kunna använda sig av fritextsökning.
T.ex söksträngen "Jag heter lars" skall lista träffar med antal träffar.
Finns "lars" med två gånger och "heter" åtta gånger i kolumen så skall det skrivas ut at "Lars" finns 2 gånger och "heter" 8 gånger.
Hur får man ut ett ords antal förekomster i en sträng?
Skriver lite kod då. Det finns säkert ett smidigare sätt, men detta är det smartaste min hjärna kan komma på.
arrSok = Split(Request.Form("sok"))
arrStrang = Split(objRS("kolumn"))
For i = 0 To UBound(arrSok)
For j = 0 To UBound(arrStrang)
If arrSok(i) = arrStrang(j) Then intCount = intCount + 1
Next
strResultat = strResultat & arrSok(i) & " fanns " & intCount & " gånger.<br>"
intCount = 0
Next
Response.Write(strResultat)
testade din kod och den fungerar men jag skulle vilja ha ut ordens förekomst i procent.
söker jag på tre ord och tex ett av ordet finns så vill jag då ha utrkrivet 33 %. Självklart sorterat med flest ord först.
Har varit på 2 st 30-års skivor så jag är lite mossig i hatten...
Här kommer min kod.
e=1
strString = "Detta är en sökning"
ArrayTemp = split(strString, " ")
NumberOfWords = UBound(ArrayTemp) + 1
e=1
For Each Word In ArrayTemp
strresult = strresult & "'%'+'"& Word &"' + '%'+"
e=e+1
next
RS = "SELECT BODY FROM tblContent WHERE BODY LIKE " & left(strresult,len(strresult) -1)
Set RS1 = DbConn.Execute(RS)
While Not RS1.EOF
Response.write RS1("BODY") & "<br>"
RS1.MoveNext
Wend
RS1.CLOSE
Set RS1 = Nothing
<%
arrSok = Split(Request.Form("sok"))
arrStrang = Split(objRS("kolumn"))
For i = 0 To UBound(arrSok)
For j = 0 To UBound(arrStrang)
If arrSok(i) = arrStrang(j) Then intCount = intCount + 1
Next
strResultat = strResultat & arrSok(i) & " fanns " & Round(intCount/(UBound(arrSok)+1)*100) & "% av gångerna.<br>"
intCount = 0
Next
Response.Write(strResultat)
%>
/red Märkte att det blev helt fel. Tar inte bort koden ifall att någon ändå vill ha den.
Dim astrSearch(), astrWords(), aintHits()
astrSearch = Split(Request.Form("sok"))
astrWords = Split(objRS("kolumn"))
For i = 0 To Ubound(astrSearch) - 1
aintHits(i) = 0
For j = 0 To Ubound(astrWords) - 1
If astrSearch(i) = astrWords(j) Then aintHits(i) = aintHits(i) + 1
Next j
Next i
For i = 0 To Ubound(astrSearch) - 2
For j = 1 To Ubound(astrSearch) - 1
If aintHits(j) > aintHits(i) Then
intTemp = aintCount(i)
aintCount(i) = aintCount(j)
aintCount(j) = intTemp
strTemp = astrSearch(i)
strSearch(i) = strSearch(j)
strSearch(j) = strTemp
Next j
Next i
intWords = Ubound(astrWords)
For i = 0 To Ubound(astrSearch) - 1
Response.Write FormatPercent(CDbl(aintCount(i)) / CDbl(intWords), 2, True) & " : " & astrSearch(i) & "<br>"
Next i
Vete tusan om den där sorteringen fungerar speciellt bra, men det är ju bara att testa och se vad som spottas ut
260 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a