Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lustig bug i sökmotor

Postades av 2004-10-01 10:32:28 - Benni Svensson, i forum asp - allmänt, Tråden har 6 Kommentarer och lästs av 470 personer

Jag hittade ett litet fint script, för en söktjänst på mitt forum.
Problemet är, skriver jag tex boll då markeras boll i fotboll. Skriver jag Fotboll så markeras en bart F i Fotbollsmålvakt.

Jag har letat så att ögonen går i tvärs, men jag hittar inte var felet är.
Detta är det avsnitt som markera (gör söktexten fet)sökordet.
[REDIGERAT]
Pelle tyckte att det fattades i koden, så jag tar och lägger till lite mera
<code>
'jag visar inte hur den bygger upp SQL:en, tar onödig plats.

rs.open sql,Connect,3,3
if not rs.eof then
response.write "<br>Din sökning på <FONT COLOR=red><B>'" &word& "'</FONT></B> gav " & rs.recordcount & " träffar.<P>"

do while not rs.eof

pageBody = rs("inlagg")
' pass the field value to a local variable
if andW then
'this is from above when we checked for a Boolean value of AND
for i = 0 to ubound(andWord)
'go through the search word array
pos = instr(pageBody,andWord(i))
'find the position of the word in the field.
strW = trim(left(andWord(i),pos))
' now pass the word found to local variable.
newStr = "<strong>" & strW & "</strong>"
' and highlight the found word with bold html tags.
pageBody = replace(pageBody, strW, newStr)
' now put back the word into pageBody variable.
'If we didn’t pass the rs(“pageBody”) first it would overwrite
'the variable every time it goes through the loop.
Next
'Now just set up two more for loops for “OR” and for BLANKS
'The last one will be no Boolean values or blanks.
else
pos = instr(pageBody, word)
strW = trim(left(word, pos))
newStr = "<strong>" & strW & "</strong>"
pageBody = replace(pageBody, strW, newStr)
end if
'Now write out the results from the query with the highlighted
'words in there.
response.write pageBody & "<hr><br>"
</code>
Jag visar här en förkottad vertion av presentationen, jag lägger den annars via en tabell osv.


Svara

Sv: Lustig bug i sökmotor

Postades av 2004-10-01 10:43:57 - Pelle Johansson

Koden är inte komplett - kan du klippa ut en ny version och redigera ditt inlägg ovan?
Sen skall du få ett bra tips - har du exempelvis VB6 - kasta in koden där så kan du debugga online och se vad som händer, vad parametrarna står osv, det besparar oftast en massa tid.


Svara

Sv: Lustig bug i sökmotor

Postades av 2004-10-03 11:59:41 - Benni Svensson

Jag har upptäckt mera buggar, så jag tar chansen att lägga in det mesta av scriptet här:
Formuläret:
<code>
<TD vAlign=top>
<Form method="post" action="template.asp">
Sök på IdrottsPortalens Forum!
Använd <B>and, or</B> eller <B>mellanslag</B> för att söka på flera ord.<P>

<Input type="text" value="" name="keyword" size="30">
<input type="Submit" value="Sök i Forumet"><br>
<Input type="hidden" value="yes" name="srch">
</form>
</code>
Tar imott formulärdata och bygger upp SQL:en
<code>
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

set conn = server.createobject("adodb.connection")
set rs = server.createobject("adodb.recordset")
sql = "select * from t_forum where rubrik like " & kW & " or inlagg like " & kW
'with rs
rs.open sql,Connect,3,3
if not rs.eof then
response.write "<br>Din sökning på <FONT COLOR=red><B>'" &word& "'</FONT></B> gav " & rs.recordcount & " träffar.<P>"
</code>
Loppar resultatet:
<code>
do while not rs.eof

pageBody = rs("inlagg")
' pass the field value to a local variable
if andW then
'this is from above when we checked for a Boolean value of AND
for i = 0 to ubound(andWord)
'go through the search word array
pos = instr(pageBody,andWord(i))
'find the position of the word in the field.
strW = trim(left(andWord(i),pos))
' now pass the word found to local variable.
newStr = "<strong>" & strW & "</strong>"
' and highlight the found word with bold html tags.
pageBody = replace(pageBody, strW, newStr)'*************************

' now put back the word into pageBody variable.
'If we didn’t pass the rs(“pageBody”) first it would overwrite
'the variable every time it goes through the loop.
Next
'Now just set up two more for loops for “OR” and for BLANKS
'The last one will be no Boolean values or blanks.
else
pos = instr(pageBody, word)
strW = trim(left(word, pos))
newStr = "<strong>" & strW & "</strong>"
pageBody = replace(pageBody, strW, newStr)
end if
'Now write out the results from the query with the highlighted
'words in there.
response.write pageBody & "<hr><br>"

rs.movenext
loop
else
response.write "<br>Inga inlägg matchade <FONT COLOR=red><B>" &word& "</FONT> </B><br>"
end if
'end with
end if
</code>
En extra funktion:
<code>
Function boldText(myString,strReplace)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = TRIM(strReplace)
replacestring = objRegExp.Replace(myString, "<B>" & strReplace & "</B>")
boldText = replacestring
End Function
</code>
Vad som är galet är.
1 Om jag använder mig av operatorn AND så får jag ett error:
<code>
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'ubound'
</code>
Detta får jag inte vid operatorn OR (jag kan inte se skillnaden)

Söker jag på fotboll så hittar den inte fotbollsmålvakt, men söker jag på boll så hittar den fotbollsmålvakt.
Skriver jag boll så markeras boll med fel still i fotbollsmålvakt, söker jag på Fotboll så markeras bara F:et, inte resten.
Enligt beskrivning, så skall man kunna skriva in en mening med mellanslag imellan orden, gör jag det så visas allt i databasen...

Jag kan nog hålla på mera, tyckte först att det var ett fint script, men...
Det kanske vore lika bra att fråga efter ett bra ASp-script???


Svara

Sv: Lustig bug i sökmotor

Postades av 2004-10-03 16:32:12 - Oskar Johansson

>har du exempelvis VB6 - kasta in koden där så kan du debugga online och se vad som händer, vad parametrarna står osv, det besparar oftast en massa tid.

Man ska kunna debugga asp i interdev eller i vs.net också. :)


Svara

Sv: Lustig bug i sökmotor

Postades av 2004-10-06 18:23:34 - Benni Svensson

Jag har kommit på felet, men hur lösa det, det vet jag inte.
<code>
if instr(word, "and") then
</code>
Söker jag nu på hand AND boll så blir resultatet:
'%h%' and '% AND boll%' dvs den hittar and i handboll, och det är ju inte meningen.
Hur löser jag detta?


Svara

Sv: Lustig bug i sökmotor

Postades av 2004-10-06 23:24:03 - André Claesson

Om du bara vill hitta fristående ord får du väl istället
för att söka på "boll" söka på " boll ".

Andrec


Svara

Sv: Lustig bug i sökmotor

Postades av 2004-10-07 01:57:22 - Benni Svensson

Tack AC ett steg närmare.
Nu lyckades det dvs jag kan söka på 'boll and spel' och den skriver ut ordentligt.
Men om jag lägger till ett ord till, t ex 'boll and spel and kul' då får jag bara med

'%spel%' and '%kul%'
Så här ser den funktionen ut:
<code>
word=replace(trim(request("keyword")),"'", "''")
kW = "'%" & word & "%'"
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
end if
</code>
JAg har försökt med att replaca " and " och istället splitta på " " men med samma resultat.
Några ideer?


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 784
27 960
271 761
589
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies