---
title: "Problem med sökmotor"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/113013-problem-med-sökmotor"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "saw"
published: "2004-10-06T09:58:04.000Z"
updated: "2004-10-06T20:41:16.000Z"
replies: 14
views: 600
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/113013-problem-med-sökmotor"
---

# Problem med sökmotor

## #1 — saw, 2004-10-06T09:58Z

Jag har hittat ett litet fint script för en sökmotor, men det finns en del buggar som jag gärna skulle vilja ha hjälp med.

```
if LEN(request("keyword"))>=3 then
	if request("srch") = "yes" then
	  dim count, nWord, spWord, andWord, orWord
	  ' set up variables

	  word=replace(trim(request("keyword")),"'", "''")
	  ' trim spaces and replace the single quote

	  if instr(word, "and") then
	    ' check Boolean of and
	    andW = true
	    Word = split(word,"and")
	    'now get all the words separated by and into an array

	    for i = 0 to ubound(andWord)
	      if i <> ubound(andWord) then
	        kW = "'%" & andWord(i) & "%'"
	        'set up sql statement
	      elseif i = ubound(andWord) then
	        ' when it hits the end
	        kW = kW &"'%" & andWord(i) & "%' and "
	        ' add the last sql statement
	      end if
	    next

	  elseif instr(word,"or") then
	    orW = true
	    orWord = split(word,"or")
	    for i = 0 to ubound(orWord)
	      if i <> ubound(orWord) then
	        kW = "'%" & orWord(i) & "%' and "
	      elseif i = ubound(orWord) then
	        kW = kW & "'%" & orWord(i) & "%'"
	      end if
	    next

	  elseif instr(word," ") then
	    spW = true
	    spWord = split(word," ")
	    for i = 0 to ubound(spWord)
	      if i <> ubound(spWord) then
	        kW = "'%" & spWord(i) & "%' or "
	      elseif i = ubound(spWord) then
	        kW = kW & "'%" & spWord(i) & "%'"
	      end if
	    next
	  else
	    'There is no Boolean value or Blank in the search word<br>
	    kW = "'%" & word & "%'"
	  end if
```

Problem:
Om jag försöker att använda mig av and då kommer detta medellande:

```
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'ubound'
/Hemsidor/Idrottsportalen/Idrottsportalen_filer/Forum/template.asp, line 52
```

rad 53 är for i = 0 to ubound(andWord)

Man skall också kunna skriva text rakt in t ex "fotboll är kul", men då blir det ett annat fel, den visar allt som finns i databasen.
Några tips?

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

## #2 — nitro2k01, 2004-10-06T10:04Z

Första frågan löses så här:

```
    andWord = split(word,"and")
```

 
istället för

```
    Word = split(word,"and")
```

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

## #3 — @nders, 2004-10-06T10:08Z

Angående den andra frågan:

Det man gör när SQL-frågor returnerar fel saker är att skriva ut den färdiga SQL-frågan. Det är helt omöjligt att gissa vad som är fel.

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

## #4 — saw, 2004-10-06T10:16Z

Jag hitta ett fel ...

```
andWord = split(word,"and")
for i = 0 to ubound(andWord)
```

...men då uppstod nästa fel.

```
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel 
(operator saknas) i frågeuttrycket 'rubrik like '%boll %''% rund%' 
and or inlagg like '%boll %''% rund%' and'.

/Hemsidor/Idrottsportalen/Idrottsportalen_filer/Forum/template.asp, line 97

'SQLEN
 sql = "select * from t_forum where rubrik like " & kW & " or inlagg like " & kW
```

Några bra tips?

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

## #5 — @nders, 2004-10-06T10:27Z

Visa den kompletta SQL-frågan istället. Lättare både för dig och andra att felsöka.

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

## #6 — saw, 2004-10-06T12:51Z

Det är ju den som jag visade

```
sql = "select * from t_forum where rubrik like " & kW & " or inlagg like " & kW
```

kod byggs ju upp dynamiskt och läggs in i variablem kW

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

## #7 — @nders, 2004-10-06T12:53Z

Den kompletta SQL-frågan visas om du skriver ut den med Response.write...

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

## #8 — saw, 2004-10-06T13:58Z

Ursäkta, jag missförstod.
Jag hittade lite fel i 'and'functionen så den sql:en blir

```
select * from t_forum where rubrik like '%boll %' and '% rund%' or inlagg like '%boll %' and '% rund%'
```

..och den ser ju rätt ut nu och ger rätt antal träffar.
när det gäller 'or' functionen:

```
select * from t_forum where rubrik like '%boll %' or '% rund%' or inlagg like '%boll %' or '% rund%'
```

..så ser den också rätt ut, men den tar fram allt i databasen.
När det gäller den sista, om jag söker på 'boll hand rund'

```
select * from t_forum where rubrik like '%boll h%' and '% rund%' or inlagg like '%boll h%' and '% rund%'
```

..då ser man att den hugger av andra ordet.
Frågan är väll också om det skall vara operatorn 'and', det kanske skulle byttas mot 'or'?

Om jag bara söker på ett ord 'handboll'

```
else
	    'There is no Boolean value or Blank in the search word<br>
	    kW = "'%" & word & "%'"
	  end if
'SQL
select * from t_forum where rubrik like '%h%' and '%boll%' or inlagg like '%h%' and '%boll%'ORDER BY rubrik
```

och här ser det lustigt ut.

\[REDIGERAT\]
Om jag använder sokördet 'fotboll and mål' visas allt i databasen
Om jag använder sokördet 'fotboll or mål' visas allt i databasen
Om jag använder sokördet 'fotboll  mål' visas två poster, vilket torde vara korrekt.

Någonting lustigt gör att ifallen and/or så tas allting fram.

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

## #9 — J.N., 2004-10-06T15:16Z

HEJ!

Jag ger mig inte på koden, men har du uppmärksammat vad det står i ... like '%boll h%' and '% rund%' or...?

När du söker på "boll hand rund" delas det "boll h and rund", och det vill du säkert inte. Då innebär säkert det extra and att du får med alla poster på något sätt.

I fallet "handboll", lättare se där, ger alla poster med "h och boll eller med h", dvs du får säkert inte alla, men många.

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

## #10 — saw, 2004-10-06T16:09Z

Du har säkert rätt, men jag har kommit på felet, men vet inte hur jag skall fixa det.
Titta här:

```
if instr(word, "and") then
```

Om jag nu skriver handboll, så hittar den ju 'and' och därför
så måste ju resultatet bli '%h%' AND '% AND boll%' 
osv.
Det är vad jag förstår det stora problemet.
Hur bör jag lösa det?

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

## #11 — @nders, 2004-10-06T18:28Z

Se till att du letar efter ordet and istället, dvs:

```
if instr(word, " and ") then
```

Edit: var hittade du förresten scriptet? Jag blir väldigt förvånad över att sånt här skräp läggs ut för andra att använda... :x

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

## #12 — saw, 2004-10-06T19:20Z

Det gjorde ingen skillnad, tyvärr :-(

Jag minns inte var jag hittade scriptet, det var för något år sedan.
Det jag har bekymmer med är ju att bygga upp strängen, då har kanske någon url där jag kan kolla om det passar?

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

## #13 — @nders, 2004-10-06T19:41Z

Du måste se till att du gör spliten på " and " också, och inte bara ha det i if-satsen. Det är spliten som är det väsentliga.

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

## #14 — saw, 2004-10-06T20:20Z

Tack för att du inte ger upp @nders.
Kodsnutten ser ut:

```
if instr(word, " and ") then
andW = true
andWord = split(word," and ")
for i = 0 to ubound(andWord)
if i <> ubound(andWord) then
kW = "'%" & andWord(i) & "%' and "
elseif i = ubound(andWord) then
kW = kW &"'%" & andWord(i) & "%'"
end if
 next
```

Om jag nu söker på handboll och fotboll så blir sql:en

```
select * from t_forum where rubrik like '%boll %' and '% fotboll%' or inlagg like '%boll %' and '% fotboll%'ORDER BY rubrik
```

Som du ser så klipper den av hand (ibland så finns h:et med)
Den klipper tydligen ord som innehåller 'and' bol och kul går bra.

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

## #15 — saw, 2004-10-06T20:41Z

Hurra , jag har lyckats nu, jag utgick ifrån vad @nders påpekade, och petade lite, sen har jag fått det mesta att fungera.

Vad som inte fungerar är om man har dessa sökord:
fotboll and handboll or kulspel
Då blir SQL:en

```
select * from t_forum where rubrik like '%fotboll%' and '%
handboll or kulspel%' or inlagg like '%fotboll%' and '%handboll or 
kulspel%' ORDER BY rubrik DESC
```

...men det är kanske att begära för mycket?

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/113013-problem-med-sökmotor
