Un motore di ricerca nel tuo sito

di Luca Milan, in Database,

Quando il nostro sito web diventa sempre più ricco di informazioni e pagine HTML, può diventare utile indicizzare via database le notizie e i contenuti del sito. Questo espediente semplifica notevolmente le ricerca delle informazioni da parte dell'utente, il quale attraverso un semplice form di ricerca potrà accedere rapidamente alle pagine HTML desiderate.

Certo, è possibile usare lo stesso Index Server per fare questo lavoro, ma in molti casi (sopratutto in caso di sistemi piccoli gestiti in proprio) ed in particolar modo con siti non molto grandi, può essere utile non usare Index Server per risparmiare preziose riserve sul server e metterle a disposizione delle nostre applicazioni ASP.

Per indicizzare il sito serve costruire una tabella sul nostro database, Access per esempio, son una struttura simile:

Struttura Tabella Documenti di Access
Doc_ID Campo numerico valore intero, chiave primaria della tabella rappresenta l'ID del documento da cercare utile per l'impaginazione e la navigazione tra i risultati.
Doc_URL Campo testo del valore di 50 caratteri, indica il percorso del file HTML da cercare, /web/miapagina.html
Titolo Campo testo, del valore di 200 caratteri, contiene il titolo della pagina HTML.
Descrizione Campo testo o memo, è una breve descrizone della pagina HTML e delle informazioni che contiene, rappresenta il campo in cui verrà effettuata la ricerca della parola inserita dall'utente.

Quando inseriamo una nuova pagina web nel nostro sito dobbiamo indicizzarla. Per fare questo sarà necessario inserire il suo titolo, il percorso e una breve descrizione dei contenuti all'interno della tabella Documenti, per il momento a mano, ed il gioco è fatto.
Per fare un buon lavoro nella descrizione dovete tentare di inserire il maggior numero di parole chiave, per rendere la ricerca più precisa e vasta.
Con la seconda parte verrà spiegato come avvantaggiarsi dell'uso dei META TAGS per automatizzare il tutto.
Abbiamo essenzialmete due files, uno contenente il form per la ricerca ricerca.html e uno contenente lo scripts asp per l'interrogazione del database, risultati.asp .

Ecco il codice di ricerca.html:

 <form action="risultati.asp" method="post">
<input type="Text" name="StringaDaCercare" size="8" maxlength="20">
<input type="Submit" value="Go">
<input type="Hidden" name="ID" value="0">
<input type="Hidden" name="operatore" value="AND">
</form>

Ecco il codice di risultati.asp:

 <!--#include virtual="/scripts/adovbs.inc"-->
<%
'Connessione al database
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DNS_DATABASE;"

'Setta le preferenze
OperatoreBooleano = Request.form("operatore")
RecordsPerPagina = 5

'Recupera la stringa da ricercare
Dim strRicerca
strRicerca = Request.form("StringaDaCercare")

'Recupera ID del documento da ricercare
ID = Request.Form("ID")

'Definisci l'istruzione SQL
Dim stmSQL, tmpSQL
stmSQL = "SELECT * FROM Documenti WHERE "
tmpSQL = "(Descrizione LIKE "

'Suddividi la stringa da cercare
Dim Pos
Pos = 1
While Pos > 0
  Pos = InStr(1, strRicerca," ")
   If Pos = 0 Then
     'Ho trovato una sola parola nella stringa da ricercare
     tmpSQL = tmpSQL & "'%" & strRicerca & "%')"
   Else
     'Ci sono più parole, quindi concateno le istruzioni LIKE SQL
     tmpSQL = tmpSQL & "'%" & Mid(strRicerca,1,Pos) & "%' " & OperatoreBooleano & " Descrizione LIKE "
     strRicerca = Mid(strRicerca,Pos+1,len(strRicerca))
   End If
 Wend
2 pagine in totale: 1 2
Contenuti dell'articolo

    Commenti

    Visualizza/aggiungi commenti

    | Condividi su: Twitter, Facebook, LinkedIn

    Per inserire un commento, devi avere un account.

    Fai il login e torna a questa pagina, oppure registrati alla nostra community.

    Approfondimenti