codice:
function create_result_table(byval testo)
set rsMenu = server.CreateObject("ADODB.recordset")
set rsResult = server.CreateObject("ADODB.recordset")
set rsSearch = server.CreateObject("ADODB.recordset")
rsResult.fields.append "title",203,65536
rsResult.fields.append "content",203,65536
rsResult.fields.append "order",19,4
'rsResult.fields.append "idtable",3,4
'rsResult.fields.append "id",3,4
rsResult.fields.append "link",203,65536
rsResult.open
rsMenu.activeConnection= connStr
rsMenu.source ="SELECT * FROM configuration WHERE use_in_search=-1"
RsMenu.CursorType = 3
RsMenu.CursorLocation = 2
RsMenu.LockType = 1
rsMenu.open
testo=generate_pattern(testo)
do until rsMenu.eof
field_id=Primarykey_name(rsMenu("tabella"))
rsSearch.activeConnection= connStr
rsSearch.source="SELECT * FROM " & rsMenu("tabella") & iif(rsMenu("search_exclude")<>"", " WHERE " & rsMenu("search_exclude"),"")
RsSearch.CursorType = 3
RsSearch.CursorLocation = 2
RsSearch.LockType = 1
rsSearch.open
field_search testo,rsSearch,rsResult,rsMenu("search_fields"),rsMenu("idTable"),Field_id,rsMenu("search_format_title"),rsMenu("format_link")
rsSearch.close
rsMenu.movenext
loop
rsMenu.close
set rsMenu=nothing
rsResult.sort="order DESC"
'set Application("search." & lcase(testo))=rsResult
set create_result_table=rsResult
end function
function generate_pattern(byval formatString)
init = InStr(1, formatString, """")
insert=""
Do until init=0
insert="|"
fine = InStr(init+1, formatString, """")
if generate_pattern<>"" then generate_pattern=generate_pattern & "|"
generate_pattern = generate_pattern & "("& Replace(Trim(Mid(formatString, init + 1, fine - init -1)), " ", "\s") & ")"
formatString = rtrim(Left(formatString, init - 1)) & " " & ltrim(Mid(formatString, fine + 1))
init = InStr(1, formatString, """")
Loop
formatstring=trim(formatstring)
if formatString<>"" then generate_pattern=generate_pattern & insert & "("& Replace(formatString, " ", ")|(") & ")"
end function
Sub field_search(testo,rsSearch,rsResult,fields_list,idtable,field_id,format_title,format_link)
Set RegEx = New RegExp
do until rsSearch.eof
for each ccampo in rsSearch.fields
if instr(1,fields_list,ccampo.name,1)<>0 then
temp_text=HTMLtoPlain(ccampo.value)
RegEx.Pattern = testo
RegEx.IgnoreCase = True
RegEx.Global = True
if regEx.test(temp_text)=true then
Set matches = RegEx.Execute(temp_text)
RetStr = matches(0).FirstIndex
If RetStr < 51 Then
lengh = InStr(200, temp_text, " ")-1
If lengh <= 0 Then lengh = len(temp_text)
text2use = Mid(temp_text, 1, lengh)
Else
start = InStr(RetStr-50, temp_text, " ")+1
lengh=instr(RetStr+150,temp_text," ")-start
If lengh<=0 Then lengh = len(temp_text)-start+1
text2use ="..." & Mid(temp_text, start, lengh)
End If
if len(text2use)<> len(temp_text) then text2use=text2use &"..."
Lastkey=""
For Each Key in matches
If lcase(lastkey) <> lcase(key.value) Then
lastkey=key.value
RegEx.Pattern = Key.Value
text2use = RegEx.Replace(text2use, "" & Key.Value & "")
End If
Next
rsResult.addnew
rsResult("title")=formatcontent(rsSearch,format_title)
rsResult("link")=formatcontent(rsSearch,format_link)
rsResult("content")=text2use
rsResult("order")=rsSearch("visited")
'rsResult("idtable")=idtable
'rsResult("id")=rsSearch(cstr(field_id))
rsResult.update
set matches=nothing
exit for
end if
end if
next
rsSearch.movenext
loop
set RegEx= nothing
end sub