Är det någon som ser något fel (eller kan skriva om) följande rad till en sökmotorfunktion: Om strängen "om och oss" inte finns med i PageKeywords så får du naturligtvis inte heller någon träff. Kolumner med namnet ID brukar i MS SQL-QueryAnalyzer bli blåmarkerat dvs det är ett keyword i SQL. Prova att skriv : "SELECT [ID],..." i ställer, dvs klamrar runt ID. Är inte säker på att det är detta som är problemet, men värt ett försök i alla fall... tack johan! soktext = request.form("soktext") om alla sökorden finns i Request form, så är förslaget, kör en SPLIT() på mellanslag, då får du en vektor med de olika sökorden som resultat. Tack för förslagen! Typ så här: Johans tips funkar alldeles utmärkt, men när man ändå skriv ihop två rader är det lika bra att lägga upp dem, följande går oxo bra Lamko: Byt ut din SQL stats mot den jag skrev bara så ska det funka Alternativ lösning där du slipper loop: Vill tacka alla för hjälpen i detta ärende (som jag för övrigt postat 2 gånger i forumet).Är tjatig, men gärna få löst sökmotorproblem!
SearchKeywords.Source = "SELECT ID, PageHeadline, PageKeywords, PageDescription FROM Page WHERE PageKeywords LIKE '%" & Replace(Replace(SearchKeywords__MMColParam, "'", "''")," ","%") & "%'"
Vid sökning på en sida som har inlagda sökorden "om oss" uppstår felet om man söker på ex "om och oss". Ger ingen träff. Skiver man "om" funkar det, skriver man "oss" funkar det och likaså om man söker på "om oss". Men inte så fort man lägger till ett annat ord som inte finns med. Har frågat om detta tidigare men hoppas på ny hjälp. Tidigare inlägg finns här http://www.pellesoft.se/development/forum/view.asp?msgid=88843&forumid=1&sum=1 och fullständig kod för sidan jag har problem finns på http://www.lamko.nu/temp/kod.txt
tack!Sv: Är tjatig, men gärna få löst sökmotorproblem!
Du får bygga upp din SQL-fråga så att den söker efter varje ord och ger en träff om något av orden finns med.
SELECT * FROM tabell WHERE kolumn LIKE '%om%' OR kolumn LIKE '%och%' OR kolumn LIKE '%oss%'
/JohanSv: Är tjatig, men gärna få löst sökmotorproblem!
Sv: Är tjatig, men gärna få löst sökmotorproblem!
nä, det är sant men trodde att man skulle få träff om något av orden fanns med, inte exakt fras.
Är man jobbig om man frågar efter en färdig kodsnutt utifrån min selectsats ovan?
Får inte till det enligt dina instruktioner/ditt exempel.
Hur skriver man en sån rad, man vet ju inte på förhand hur många sökord besökaren använder.
tack igen!
Till Per:
Tack för ditt svar, men detta påverkade inte.Sv: Är tjatig, men gärna få löst sökmotorproblem!
sokord = split(soktext," ")
<code>
for index = 0 to ubound(sokord)
if sok = "" then
sok = "kolumn like '" & sokord(index) & "'"
else
sok = sok & " OR kolumn like '" & sokord(index) & "'"
end if
next
SQL = "SELECT * FROM tabell WHERE " & sok
</code>Sv: Är tjatig, men gärna få löst sökmotorproblem!
Sen är det bara att iterera igenom dem såhär
<code>
SQL = "SELECT * FROM tbl WHERE"
'Iteration så länge vektorn inte är slut (UBound())
For i To UBound(arr)
If i=1 Then
SQL = SQL & " PageKeyWords LIKE '%" & Replace(Replace(SearchKeywords__MMColParam, "'", "''")," ","%") & "%'"
Else
SQL = SQL & " OR PageKeyWords LIKE '%" & Replace(Replace(SearchKeywords__MMColParam, "'", "''")," ","%") & "%'"
End If
i = i + 1
Next
</code>
hehe, snyggt förslag ZeToc ;o) hann inte se det innan jag posta självSv: Är tjatig, men gärna få löst sökmotorproblem!
Är tyvärr inte tillräckligt kunnig inom asp för att förstå var era kodexempel skall läggas in(zetocs kod till exempel), eller vad jag måste byta ut i min existerande kod. Någon som vill/kan visa hur det skall se ut i min existerande kod?
koden:
http://www.lamko.nu/temp/kod.txt
Vore väldigt tacksam om så vore!!Sv: Är tjatig, men gärna få löst sökmotorproblem!
<code>
16 Set SearchKeywords = Server.CreateObject("ADODB.Recordset")
17 SearchKeywords.ActiveConnection = MM_IPE_STRING
18 SearchKeywords.Source = "SELECT ID, PageHeadline, PageKeywords, PageDescription FROM Page WHERE "
19
20 Dim keywords
21 keywords = Split(Replace(SearchKeywords__MMColParam, "'", "''"), chr(32))
22
23 for i = 0 to ubound(keywords)
24 SearchKeywords.Source = SearchKeywords.Source & "PageKeywords LIKE '%" & keywords(i) & "%'"
25 if i < (ubound(keywords)-1) then
26 SearchKeywords.Source = SearchKeywords.Source & " or "
27 end if
28 next
</code>
/JohanSv: Är tjatig, men gärna få löst sökmotorproblem!
Sen sätter du bara Seach
<code>
Dim SearchKeywords
Dim SearchKeywords_numRows
'===================================
' Lägg in följande direkt efter dina deklarationer
' Start
Dim arrSearchKeywords
Dim iCounter
Dim SQL
arrSearchKeywords = Split(SearchKeywords__MMColParam," ")
For iCounter = 0 to Ubound(arrSearchKeywords)
' Första posten i vektorn skall inte ha OR sats
If iCounter = 0 then
SQL = "SELECT ID, PageHeadline, PageKeywords, PageDescription FROM Page WHERE PageKeywords LIKE '%" & Replace(Replace(arrSearchKeywords(iCounter), "'", "''")," ","%") & "%'"
Else
SQL = SQL & " OR PageKeywords LIKE '%" & Replace(Replace(arrSearchKeywords(iCounter), "'", "''")," ","%") & "%'"
End If
Next
'===================================
' End
</code>
Glöm inte att sätta SearchKeywords.Source till SQL värdet som vi bygger ihop här ovan
SearchKeywords.Source = SQLSv: Är tjatig, men gärna få löst sökmotorproblem!
Sv: Är tjatig, men gärna få löst sökmotorproblem!
<code>
Dim SearchKeywords
Dim SearchKeywords_numRows
Dim SearchKeywords__MMColParam
Dim arrSearchKeywords
Dim strSQL
SearchKeywords__MMColParam = "Ord1 Ord2 Ord3"
SearchKeywords__MMColParam = Replace(SearchKeywords__MMColParam, "'", "''")
arrSearchKeywords = Split(SearchKeywords__MMColParam, " ")
strSQL = "PageKeywords LIKE '%" & Join(arrSearchKeywords, "%' AND PageKeywords LIKE '%") & "%'"
</code>
:PSv: Är tjatig, men gärna få löst sökmotorproblem!
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.