Non vi siete mai chiesti a cosa serve Microsoft Index Search e come poterlo utilizzare nel vostri siti web? Io questa domanda me la sono posta e ho trovato un interessante utilizzo di questa funzionalità. Sostanzialmente Index Search indicizza un disco o una cartella specifica del vostro server e ne crea un catalogo che è possibile interrogare e trovare quindi tutti i documenti che state ricercando.
Come si fa ad implementare una soluzione?
Semplicissimo! Dal server aprire Gestione computer dal Pannello di controllo | Strumenti di amministrazione. Sotto il menu Servizi e applicazioni, aprire Servizi di indicizzazione. Per creare intanto un catalogo dai nostri documenti che potranno essere ricercati dalla nostra applicazione web, cliccare il tasto destro e scegliere Nuovo | Catalogo. Compare quindi una finestra nel quale inserire il nome del catalogo ed il percorso da indicizzare. Salvando questi dati sotto Servizi di indicizzazione si visualizzerà il nome del nuovo catalogo (nel caso dell'immagine qui a fianco Intranet). Fin da subito è possibile vedere nel catalogo due cartelle di nome Directory e Proprietà e un file asp del nome Cerca nel catalogo. Ovviamente è necessario un po' di tempo affinché i file presenti nella cartella scelta siano indicizzati completamente.
Utilizzo del catalogo
Creare una pagina ASPX nel quale inserire il seguente codice:
<table id="Table3" cellspacing="1" cellpadding="1" width="95%" align="right" border="0">
<tr>
<td>
<p>
</p>
<p>
<asp:label id="Label1" runat="server">Ricerca</asp:label>
<asp:textbox id="txtSearch" runat="server"></asp:textbox>
<asp:button id="btnSearch" runat="server" text="Search"></asp:button>
<br>
<br>
<asp:label id="lbl" runat="server"></asp:label>
</p>
</td>
</tr>
</table>
All'interno del codice è necessario importare i riferimenti a System.Data e System.Data.OleDb e le seguenti righe di codice:
Dim cnt As Integer
Private Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs)
' crea la connessione con il catalogo di Index Search
Dim odbSearch As New System.Data.OleDb.OleDbConnection()
Dim cmdSearch As New System.Data.OleDb.OleDbCommand()
odbSearch.ConnectionString = "Provider=""MSIDXS"";Data Source=""[Catalog name]"";"
cmdSearch.Connection = odbSearch
Try
cmdSearch.CommandText = "select doctitle, filename, vpath, rank, characterization from scope() " & _
"where FREETEXT(Contents, '" + txtSearch.Text + "') and filename <> 'search.aspx' order by rank desc "
odbSearch.Open()
Try
Dim rdrSearch As OleDbDataReader = cmdSearch.ExecuteReader()
lbl.Text = ""
While rdrSearch.Read()
cnt += 1
getpagelink(rdrSearch(1).ToString())
End While
Catch ex As Exception
lbl.Text = ex.Message
End Try
odbSearch.Close()
Catch ex As SqlException
lbl.Text = ex.Message.ToString()
odbSearch.Close()
End Try
End Sub
Public Sub getpagelink(ByVal srcfile As String)
Dim temp As String = (cnt).ToString() + ".) " + srcfile
End Sub
Se nella cartella sono presenti file di Word, Excel, PowerPoint o testo non ci sono problemi. Se però avete dei file PDF non è finita qui: è necessario installare un componente che si può scaricare gratuitamente da sito Adobe che estende le funzionalità di Index Search consentendo di indicizzare anche i file PDF. Il sito per effettuare il download è il seguente http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=2611&fileID=2457 (che si trova in allegato).
ifilter60.exe (9,67 mb)