---
title: "Fritext sökning samt antal förekomster."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/76517-fritext-sökning-samt-antal-förekomster"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Cantona"
published: "2003-05-09T18:42:31.000Z"
updated: "2003-05-12T16:24:57.000Z"
replies: 7
views: 353
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/76517-fritext-sökning-samt-antal-förekomster"
---

# Fritext sökning samt antal förekomster.

## #1 — Cantona, 2003-05-09T18:42Z

Skulle behöve lite tankehjälp med följande:

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?

Permalänk: https://www.webforum.nu/p/76517

## #2 — LarsG, 2003-05-09T18:47Z

Vilken DBMS?

Permalänk: https://www.webforum.nu/p/1042005

## #3 — Sebbe, 2003-05-09T18:50Z

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)
```

Otestat. Stor chans att det inte funkar.

Permalänk: https://www.webforum.nu/p/1042006

## #4 — Cantona, 2003-05-09T18:56Z

MSSQL

Permalänk: https://www.webforum.nu/p/1042011

## #5 — Sebbe, 2003-05-09T19:23Z

Har du testat min kod? Om den inte funkar kan du väl säga vad som är problem, om inte det blir helfel såklart. :)

Permalänk: https://www.webforum.nu/p/1042046

## #6 — Cantona, 2003-05-11T18:26Z

sorry sebbe har varit ute och farit...

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
```

Permalänk: https://www.webforum.nu/p/1043223

## #7 — Sebbe, 2003-05-12T14:28Z

Såhär då? (Fortsätter på min kod)

```
<%
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. :)

Permalänk: https://www.webforum.nu/p/1043849

## #8 — Engine^, 2003-05-12T16:24Z

```
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 ;)

Permalänk: https://www.webforum.nu/p/1043930

---

Tråden på webben: https://www.webforum.nu/amne/asp/76517-fritext-sökning-samt-antal-förekomster
