Hej! WHERE PageKeywords LIKE '" & Replace(Replace(SearchKeywords__MMColParam, "'", "''")," ","%") & "' Tack för svaret! just det.. glömde ju lite då får jag error: Den kodsnutten förekommer två eller flera gånger, ta bort ala förutom den första... tack för svaret, men det funkar inte fortfarande... <code> Tack än en gång! ingen som har någon mer idé? Testa med: Prova byta ut AND med OR. Sen skall det kanske vara % istället för * kring sökorden? tack än en gång, gjorde de ändringar som föreslogs men det ger fortfarande error: Byt ut: Mid(strWhere, 6) till Mid(strWhere, 5) Jasså, du passade på att kolla in hemsidan också! Tack! Tror du har ett fel i din sida: Hmmm, det beror på att min ursprungliga kod har delvis bytts ut med kodexempel jag fått här. Så det är lite blandat nu tror jag. Vill tacka alla för hjälpen i detta ärende (som jag för övrigt postat 2 gånger i forumet).Problem med query, till en sökmotor
Undrar om någon kan hjälpa mig med följande problem.
Har skapat en sökmotor till en informationssajt jag producerat.
Varje sida på sajten har unika sökord som sparats via ett formulär i en databas.
Tabellen i databasen har fälten ID, Date, PageKeywords, PageDescription, PageHeadline, PageText.
Mitt problem är att sökmotorn inte ger de träffar som den ska, den fungerar alltså men ger inte rätt träffar. Ex en sida har sökorden "om oss". Söker man på "om" får man träff, söker man på "oss" får man träff, söker man "om oss" får man träff. MEN, söker man ex på "oss om" får man ingen träff. Söker man på "om och oss" får man ingen träff heller fastän orden finns med.
Någon som kan se fel i denna kod?
(Behövs mer än det jag klistrat in, säg till!)
<code>
<%
Dim SearchKeywords__MMColParam
SearchKeywords__MMColParam = "1"
If (Request.Form("PageKeywords") <> "") Then
SearchKeywords__MMColParam = Request.Form("PageKeywords")
End If
%>
<%
Dim SearchKeywords
Dim SearchKeywords_numRows
Set SearchKeywords = Server.CreateObject("ADODB.Recordset")
SearchKeywords.ActiveConnection = MM_IPE_STRING
SearchKeywords.Source = "SELECT ID, PageHeadline, PageKeywords, PageDescription FROM Page WHERE PageKeywords LIKE '" + Replace(SearchKeywords__MMColParam, "'", "''") + "'"
SearchKeywords.CursorType = 0
SearchKeywords.CursorLocation = 2
SearchKeywords.LockType = 1
SearchKeywords.Open()
SearchKeywords_numRows = 0
%>
</code>
Där det står
<code>WHERE PageKeywords LIKE </code>
har jag testat med
<code>WHERE PageKeywords = </code>
Men det fungerar inte heller.Sv: Problem med query, till en sökmotor
men det är inte säkert att det funkar heller... mend et får dej närmare resultatet du vill uppnå åtminstone:)Sv: Problem med query, till en sökmotor
(Tror det saknades ett " på slutet av raden men det lade jag till)
Men det blev nog inte bättre tyvärr.
Nu får jag träff om jag söker på ex "om oss".
Inte om jag skriver "om" endast.
Men den ger träff på "om ss" t ex. (??)
Och en sida som har sökorden "Sökord, sökord, sökord" inlagt som sökord får jag inte träff på om jag skriver "sökord" men däremot får jag träff om jag skriver "sökord, sökord" två gånger av de tre som är inlagda.
Förstår inte riktigt hur den söker nu.....
Var ligger felet??Sv: Problem med query, till en sökmotor
WHERE PageKeywords LIKE '%" & Replace(Replace(SearchKeywords__MMColParam, "'", "''")," ","%") & "%'"Sv: Problem med query, till en sökmotor
Microsoft VBScript compilation error '800a0411'
Name redefined
/ipe/results.asp, line 106
Dim SearchKeywords
----^Sv: Problem med query, till en sökmotor
Sv: Problem med query, till en sökmotor
man får fortfarande inte träff på ex "om och oss" på en sida som har sökorden "om oss". "om" ger träff. "oss" ger träff. Men inte så fort man blandar in andra ord eller har fel ordföljd. Måste skrivas exakt, eller ett av orden.
Vore väldigt tacksam för mer hjälp!Sv: Problem med query, till en sökmotor
<%
Dim rs
Dim con
Dim strSQL
Dim strWhere
Dim strTemp
Dim KeyWord
Dim KeyWords
strTemp = Trim(Request.Form("PageKeywords"))
If Len(strTemp) > 0 Then
KeyWords = Spilt(strTemp, " ")
For Each KeyWord In KeyWords
If Len(KeyWord) > 0 Then
strWhere = strWhere & " AND PageKeywords Like '*" & Replace(KeyWord, "'", "''") & "*'"
End If
Next
If Len(strWhere) > 0 Then
strSQL = "SELECT ID, PageHeadline, PageKeywords, PageDescription FROM Page WHERE " & Mid(strWhere, 6)
Set con = Server.CreateObject("ADODB.Connection")
con.Open MM_IPE_STRING
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 2
rs.Open strSQL, con, 0, 1
If rs.EOF Then
Response.Write "No records found!"
Else
Do Until rs.EOF
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
con.Close
Set con = Nothing
Else
Response.Write "You have not enterd any keywords!"
End If
Else
Response.Write "You have not enterd any keywords!"
End If
%>
</code>Sv: Problem med query, till en sökmotor
Trevligt att se att så många är villiga att hjälpa till.
Trodde det skulle bli mitt sista tack men det fungerar tyvärr inte fortfarande.
Rättade först till en felstavning, "spilt" till "split".
Men sen får jag följande fel när jag söker på existerande sökord:
<code>No records found!
Microsoft VBScript runtime error '800a01a8'
Object required: 'SearchKeywords'
/ipe/results.asp, line 71 </code>
Eller när jag gör en sökning utan att skiva in något alls i sökfältet:
<code>You have not enterd any keywords!
Microsoft VBScript runtime error '800a01a8'
Object required: ''
/ipe/results.asp, line 71 </code>
Vill någon se koden och/eller sidan in action, säg bara till!
Hoppas någon kan hjälpa mig vidare.Sv: Problem med query, till en sökmotor
Hade varit väldigt tacksam om någon kan hjälpa mig att lösa denna funktion...Sv: Problem med query, till en sökmotor
<code>
<%
Dim rs
Dim con
Dim Index
Dim strSQL
Dim strWhere
Dim strTemp
Dim KeyWord
Dim KeyWords
strTemp = Trim(Request.Form("PageKeywords"))
If Len(strTemp) > 0 Then
KeyWords = Split(strTemp, " ")
For Index = 1 To UBound(KeyWords)
KeyWord = KeyWords(Index)
If Len(KeyWord) > 0 Then
strWhere = strWhere & " AND PageKeywords Like '*" & Replace(KeyWord, "'", "''") & "*'"
End If
Next
If Len(strWhere) > 0 Then
strSQL = "SELECT ID, PageHeadline, PageKeywords, PageDescription FROM Page WHERE " & Mid(strWhere, 6)
Set con = Server.CreateObject("ADODB.Connection")
con.Open MM_IPE_STRING
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 2
rs.Open strSQL, con, 0, 1
If rs.EOF Then
Response.Write "No records found!"
Else
Do Until rs.EOF
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
con.Close
Set con = Nothing
Else
Response.Write "You have not enterd any keywords!"
End If
Else
Response.Write "You have not enterd any keywords!"
End If
%>
</code>Sv: Problem med query, till en sökmotor
// JarleSv: Problem med query, till en sökmotor
<code>
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/ipe/results.asp, line 34
</code>
Hela aspkoden som jag söker hjälp med finns att se här:
http://www.lamko.nu/temp/kod.txt
Med förhoppning om att någon kan hjälpa mig.Sv: Problem med query, till en sökmotor
du har bytt AND till OR vilket medför att du bara skall klippa bort de 4 första tecknen (börja på 5:e tecknet) på strängen (och inte 5 som det var med AND).
PS. Snygg hemsida! :-)
// JarleSv: Problem med query, till en sökmotor
Dock får jag error på sökmotorn fortfarande:
<code>Microsoft VBScript runtime error '800a01a8'
Object required: 'SearchKeywords'
/ipe/results.asp, line 71
</code>
Nån ide?
Och vaddå kapa första 4 tecknen?
Vad innebär det?
Tack!Sv: Problem med query, till en sökmotor
<code>
' set the record count
SearchKeywords_total = SearchKeywords.RecordCount
</code>
Kan inte hitta att du har någonting som heter bara 'SearchKeywords', så kompilatorn hittar väl inget objekt den kan göra RecordCount på. Ser du har använt det länger ned på sidan också. Det är kanske det recordesettet du kallar rs längre upp?
Mid(strWhere, 5) tar strängen strWhere och kopierar den till slutet på strSQL, men börjar kopiera på det tecknet du anger (5).
strDestination = Mid(strSource, 5)
// JarleSv: Problem med query, till en sökmotor
Jag har återställt koden till den ursprungliga, som det var när jag skrev mitt inlägg högst upp. Och med de problem jag hade då. Jag har lagt upp koden (för hela sidan) på samma url som tidigare och jag vore väldigt tacksam om du (eller någon annan) vill titta på den och se om något kan göras för att få till sökningen/träffarna. Kan select-satsen skrivas om på något sätt? (Fel tecken/variabler?)
http://www.lamko.nu/temp/kod.txtSv: Problem med query, till en sökmotor
Jag har nu äntligen fått ordning på sökmotorn, först med vissa exempel härifrån som grund och sedan utveckling/hjälp från 2 vänner.
Som jag nämnt tidigare så tycker jag att det väldigt kul att se att så många är villiga att hjälpa till när man slänger ut ett problem via ett forum. En eloge till dom som engagerade sig!
Tack igen!
PS. För de nyfikna kommer denna sökmotor att finnas på en sajt för "Info Point Europa" inom kort. Den ligger inte online just nu, men inom några dagar kommer den att finnas tillgänglig på www.ipe.se. Är någon sen intresserad av att se lösningen bakom sökmotorn så kan ni höra av er till mig via Pellesoft.