Ecco. Non spaventarti, è un motore di ricerca e perciò è complesso,
ma tu recupera solo le istruzioni relative alla paginazione (poche righe
verso l'inizio e poi la tabellina alla fine che crea i link pagina avanti... pagina indietro... e vai a pagina...), è la stessa che
useresti in un file più semplice.

codice:
<html>
<head>
<title>Ricerca per parole chiave</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
#piedepagina{
position: relative;
left: 20px;
bottom: 25px;
}
-->
</style>
</head>
<body>






<%
call open_connection()

checked1 = request("campo1")
checked2 = request("campo2")
checked3 = request("campo3")
checked4 = request("campo4")
checked5 = request("campo5")

'esempio di ciclo al posto della serie di istruzioni sopra (nb: checked(i) diventa un array!):
'dim checked(5)
'for i=1 to 5 	
	'checked(i) = request("campo"&i)	
'next

parole=trim(request("parole"))
parole=lcase(parole) 

if len(parole) > 0 then

Set rs = Server.CreateObject("ADODB.Recordset")

'xxxxxxxxxxxxxx estrazione records contenenti una o più parole chiave (indipendentemente da maiuscole/minuscole)xxxxxxxxxx
'nb: 1) con = cerca solo le stringhe, con "like" cerca anche le sottostringhe 
'	 2) diverso comportamento con "or" oppure "and"
'	 3) vedi anche NB subito qui sotto!

'NB: un'altra possibilità, anzichè splittare l'input, è:
'sql = "SELECT * FROM  lorem2 WHERE campo1 LIKE '%"&parole&"%'  OR campo1 LIKE '%"&replace(parole," ","%")&"%'"
'(questo esempio è solo per campo1)
'sql = "SELECT * FROM lorem2 WHERE (("

ArrSearch = Split(parole)
x = 0
for each word In ArrSearch
word = trim(word)

  	If Len(checked1) <> 0 Then
     sql = sql & " campo1 like '%" & word & "%'"
    End If
	  
  	If Len(checked2) <>  0 Then
     If Len(checked1) <> 0 Then sql = sql & " or"
     sql = sql & " campo2 like '%" & word & "%'"
    End If
	
  	If Len(checked3) <> 0 Then
     If Len(checked1) <> 0 Or Len(checked2) <>  0 Then sql = sql & " or"
     sql = sql & " campo3 like '%" & word & "%'"
    End If
		
	If Len(checked4) <> 0 Then
     If Len(checked1) <> 0 Or Len(checked2) <>  0 Or Len(checked3) <>  0 Then sql = sql & " or"
     sql = sql & " campo4 like '%" & word & "%'"
    End If
	
	If Len(checked5) <> 0 Then
     If Len(checked1) <> 0 Or Len(checked2) <>  0 Or Len(checked3) <>  0 Or Len(checked4) <>  0 Then sql = sql & " or"
     sql = sql & " campo5 like '%" & word & "%'"
    End If
	
	sql = sql &")"
	
	If Not x = UBound(ArrSearch) Then sql = sql & " or ("
x = x + 1
  
Next
sql = sql &")"

'apro il rs
rs.Open sql, objConn, 3, 3

if rs.eof then ' nessun record soddisfa la richiesta!

%>



<center><table border="0" width="80%">
	<tr>
		<td></td>	
		<td align="center">Nessuna inserzione soddisfa i criteri di ricerca</td> 
		<td>Nuova ricerca</td>
	</tr>
</table>
</center>


<%

else

' XXXXXXXX CONTEGGIO PAROLE CHIAVE xxxxxxxxxxxxxxxxxxxxxxxxxx
do while not (rs.EOF)

			id=rs.fields.item("id").value
			
			if len(checked1) > 0 then
				conto1 = lcase(rs.fields.item("campo1").value) 
				'lcase perchè l'istruzione "instr" usata nel conteggio è case-sensitive!
			end if
			if len(checked2) > 0 then
				conto2 = lcase(rs.fields.item("campo2").value)
			end if
			if len(checked3) > 0 then
				conto3 = lcase(rs.fields.item("campo3").value)
			end if
			if len(checked4) > 0 then
				conto4 = lcase(rs.fields.item("campo4").value)
			end if
			if len(checked5) > 0 then
				conto5 = lcase(rs.fields.item("campo5").value)
			end if
						


x = 0
conteggio=0 

ArrSearch = Split(parole)
for each word In ArrSearch 
word = trim(word)

	prova=conto1&conto2&conto3&conto4&conto5
	
	tet=0
		for y=1 to len(prova) 
		tet=instr(prova, word) 'okkio: instr è case-sensitive!
		
			if tet > 0 then
			conteggio=conteggio+1
			prova=mid(prova,tet+1)
			end if
		next
	x=x+1
next

' XXXXXXXXXXXXXX  AGGIORNAMENTO CAMPO "NUMERO PAROLE CHIAVE" XXXXXXXXXXXXXXXXX

SQLcont= "UPDATE lorem2 SET campo6="&conteggio&" where id ="&id&""
objConn.Execute SQLcont

rs.movenext
loop

'chiudo rs
rs.close
set rs=nothing


'ZZZZZZZ  PAGINAZIONE  ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

numero=4 'records per pagina
controllo=numero 'contatore dei records per pagina

'dim rs2, sql2
Set rs2 = Server.CreateObject("ADODB.Recordset")

pag = TRIM(Request.QueryString("pag")) 'paginazione
If pag="" Then
  pag = 1
Else
  pag = CInt(pag)
End If

' XXXXXXXXXXX  NUOVA ESTRAZIONE RECORDS ..............  XXXXXXXXXXXXXXXXXXXXXX

sql2 = "SELECT * FROM lorem2 WHERE (("

ArrSearch = Split(parole)
x = 0
for each word In ArrSearch
word = trim(word)

  	If Len(checked1) <> 0 Then
     sql2 = sql2 & " campo1 like '%" & word & "%'"
    End If
	  
  	If Len(checked2) <>  0 Then
     If Len(checked1) <> 0 Then sql2 = sql2 & " or"
     sql2 = sql2 & " campo2 like '%" & word & "%'"
    End If
	
  	If Len(checked3) <> 0 Then
     If Len(checked1) <> 0 Or Len(checked2) <>  0 Then sql2 = sql2 & " or"
     sql2 = sql2 & " campo3 like '%" & word & "%'"
    End If
		
	If Len(checked4) <> 0 Then
     If Len(checked1) <> 0 Or Len(checked2) <>  0 Or Len(checked3) <>  0 Then sql2 = sql2 & " or"
     sql2 = sql2 & " campo4 like '%" & word & "%'"
    End If
	
	If Len(checked5) <> 0 Then
     If Len(checked1) <> 0 Or Len(checked2) <>  0 Or Len(checked3) <>  0 Or Len(checked4) <>  0 Then sql2 = sql2 & " or"
     sql2 = sql2 & " campo5 like '%" & word & "%'"
    End If
	
	sql2 = sql2 &")"
	
	If Not x = UBound(ArrSearch) Then sql2 = sql2 & " or ("
x = x + 1
  
Next

sql2 = sql2 &")"

' XXXXXX .......... QUESTA VOLTA IN ORDINE DI NUMERO DI RICORRENZE DELLE PAROLE CHIAVE! XXXXXXXXXX

sql2=sql2 & " ORDER BY campo6 DESC"

'apro il rs

rs2.open sql2, objConn, 3, 3 
tot = rs2.RecordCount 'conta i records nel recordset per la paginazione

%>
<table border="0" width="100%">
	<tr>
		<td></td>
		<td align="center">La ricerca ha estratto <%=tot%> inserzioni rispondenti ai criteri inseriti</td>
		<td>Nuova ricerca</td>
	</tr>
</table>


<table width='100%' border='1' cellpadding="2" cellspacing="0">
<%
rs2.move numero*(pag-1)

do while not (rs2.EOF or controllo=0)
			
			id=rs2.fields.item("id").value
			campo1=rs2.fields.item("campo1").value
			campo2=rs2.fields.item("campo2").value
			campo3=rs2.fields.item("campo3").value
			campo4=rs2.fields.item("campo4").value
			campo5=rs2.fields.item("campo5").value
			
					
'xxxxxxxxx EVIDENZIAZIONE PAROLE CHIAVE xxxxxxxxxxxxxxxxx
x=0
'ArrSearch = Split(parole)
for each word In ArrSearch
word = trim(word)

if len(checked1) > 0 then
campo1=lcase(campo1) 
'anche replace è case-sensitive: senza lcase non riconosce la sottostringa "word" (tutta minuscola)!
campo1=Replace(campo1, word, ""&word&"")
end if

if len(checked2) > 0 then
campo2=lcase(campo2) 
campo2=Replace(campo2, word, ""&word&"")
end if

if len(checked3) > 0 then
campo3=lcase(campo3) 
campo3=Replace(campo3, word, ""&word&"")
end if

if len(checked4) > 0 then
campo4=lcase(campo4) 
campo4=Replace(campo4, word, ""&word&"")
end if

if len(checked5) > 0 then
campo5=lcase(campo5) 
campo5=Replace(campo5, word, ""&word&"")
end if

x=x+1
next

'XXXXXXXXXXXXXX STAMPA A VIDEO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
			
%>
<tr>
	<td><%=campo1%></td> 
	<td><%=campo2%></td>
	<td><%=campo3%></td>
	<td><%=campo4%></td>
	<td><%=campo5%></td> 
	 
	 
<%			controllo = controllo - 1
			rs2.Movenext

	loop
	
	%>
</tr></table>



<center><table border="0" width="250">
	<tr>
<%
If ( pag > 1) Then
%>
<td width="50" align="left">[img]barrow.gif[/img]</td>
<% else %>
<td width="50"></td>
<% 
end if
%>
<td width="220" align="center">
<%
if tot mod(numero)=0 then
lastpage=int(tot/numero)
else 'deve numerare l'ultima pagina anche se incompleta!
lastpage=int(tot/numero)+1
end if
for c=1 to lastpage
%>
<%=c%>
<%
next
%></td><%
If not rs2.eof Then
%>
		</td><td width="50" align="right">[img]arrow.gif[/img]</td>
<% else %> <td width="50"></td>
<% end if %>
</tr>
</table>
</center>



    
<div id="piedepagina">Pag. <%=pag%> di <%=lastpage%></div>
<%


rs2.close
set rs2=nothing

end if
end if
'chiudo tutto
call close_connection()

%>

</body>
</html>