Forum de discussion
Forum « Programmation ASP » (archives)
Re: moteur de recherche (fichiers word excel) avec IXSSO
Envoyé: 13 juillet 2004, 9h16 par Oznog
Effectivement, ça peut être risqué de procéder ainsi. La source d'un document Word peut devenir avec le temps extêmement laid avec un tas de code inutile.
Ensuite une recherche sans index risque d'occuper beaucoup ton serveur sans parler du "InStr" qui alors là est une horreur dasns ce cas-ci!
Et ton code ne lie qu'une seul document, imagine des centaines!
Pour les documents Excel tu peux à la limite les pouvrir avec l'objet ADO et faire de véritable requête SQL. Mais pour le Word impossible.
La solution est d'utiliser Microsoft Index Server. En temps normal c'est activé par défaut sur un serveur (je vient de terminer un projet sur un des serveurs les plus puissant au Québec soit Telus et ils ne l'on même pas!). Très simple à utilisé et rapide puisqu'il utilise un index généré automatiquement sans ton intervention.
Il permet de rechercher dasn tout types de documents, même des images. Il retourne même la pertinance. Très puissant.
Il y a plus d'un objet mais le principale est le "ixsso.Query" :
Set oMIS =Server.CreateObject("ixsso.Query")
Tu peux bien sûr ajouter des filtres, comme contreindre la recherche sur les document Word et Excel. Et plusieurs fonctionnalité bien sûr.
Normalement Microsoft en met tellement que ces outils deviennent vite encombrand. Mais l'Index Server est à mon avis ce que Microsoft à fait de mieux!
Exsemple complet :
<%
Dim sSearchString
Dim oQuery
sSearchString = Request.Form("query")
Const SEARCH_CATALOG = "catalog_name"
' Création de l'Objet
Set oQuery = Server.CreateObject("IXSSO.Query")
oQuery.Catalog = SEARCH_CATALOG
' Requète avec exclusion de dossier et type de document
oQuery.Query = "@all " & sSearchString & " AND NOT #path *_* AND NOT #path *downloads* AND NOT #path *images* AND NOT #filename *.class AND NOT #filename *.asa AND NOT #filename *.css AND NOT #filename *postinfo.html"
oQuery.MaxRecords = 200
oQuery.SortBy = "rank[d]"
' Colonnes retournées
oQuery.Columns = "DocAuthor, vpath, doctitle, FileName, Path, Write, Size, Rank, Create, Characterization, DocCategory"
Set oRS = oQuery.CreateRecordSet("nonsequential")
If oRS.EOF Then
Response.Write "Aucun document de trouvé avec le terme <i>" & sSearchString & "</i>"
Else
Do While Not oRS.EOF
Response.write "<b>FileName:</b> " & oRS("FileName") & "<br>"
Response.write "<b>doctitle:</b> " & oRS("doctitle") & "<br>"
Response.write "<b>Size:</b> " & oRS("Size") & "<br>"
Response.write "<b>Create:</b> " & oRS("Create") & "<br>"
Response.write "<b>Write:</b> " & oRS("Write") & "<br>"
Response.write "<b>Characterization:</b> " & oRS("Characterization") & "<hr>"
oRS.MoveNext
Loop
End If
Set oRS = nothing
Set oQuery = nothing
%>
Tu trouveras plusieurs ressources ici "Learn More about Index Server" (http://www.4guysfromrolla.com/webtech/LearnMore/indexserver.asp)
Ciao
Oznog
Réponses
|