vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: .NET   |   VB-Versionen: VB.NET15.06.05
Suche mit dem MS-Indexdienst

Der Indexdienst bietet Ihnen die Möglichkeit, breit gefächerte Suchabfragen mit einer SQL ähnlichen Syntax auszuführen. Besonders interessant ist hierbei, dass in vielen Dateitypen nach Textinhalten gesucht werden kann

Autor:  Stefan M?hrBewertung:     [ Jetzt bewerten ]Views:  18.433 

Der Indexdienst bietet Ihnen die Möglichkeit, breit gefächerte Suchabfragen mit einer SQL ähnlichen Syntax auszuführen. Besonders interessant ist hierbei, dass in vielen Dateitypen nach Textinhalten gesucht werden kann.

Was ist der Indexdienst

Dateiverwaltung und erweiterte Dateisuchen sind momentan in der Microsoft Welt ein Schlagwort. WinFS sollte da, laut Microsoft, den großen Durchbruch bringen. Große Websuchmaschinenanbieter schlagen in dieselbe Kerbe und bieten Tools für die Desktopsuche.

Dabei haben moderne Microsoft Betriebssysteme wie WinXP und Win2000 bereits alles an Bord um Volltextsuchen auf Basis eines Dateiindizes zu erstellen; den so genannten MS- Indexdienst.

Der Indexdienst bietet Ihnen die Möglichkeit, breit gefächerte Suchabfragen mit einer SQL ähnlichen Syntax auszuführen. Besonders interessant ist hierbei, dass in vielen Dateitypen nach Textinhalten gesucht werden kann. Hersteller bekannter Dateiformate wie Adobe für PDF-Dokumente bieten Erweiterungen für den Indexdienst an, um diese Dateiformate für den MS-Indexdienst verwertbar zu machen (Adobe IFilter). Einen schnellen Überblick über die auf Ihrem System installierten IFilter Schnittstellen können Sie mit dem Tool IFilter Explorer von Citeknet bekommen ( www.citeknet.com).

Der Indexdienst kann auch von jeder modernen Programmiersprache aus benützt werden. In unserem Fall benützen wir den MS Indexdienst von VB.NET 2003 aus über einen OLEDB-Dataprovider. Doch dazu später. Zuerst sehen wir uns an, wie man den Indexdienst einrichtet.

Wie richte ich den Indexdienst ein und erstelle einen neuen Index

Für das Arbeiten mit dem Beispiel richten wir jetzt einen Katalog namens Test ein. Erstellen Sie auf Ihrer Festplatte einen zu katalogisierenden Ordner und kopieren Sie einige Dateien in diesen Ordner.

Verwalten können Sie den Indexdienst über die Computerverwaltung. Beim Aktivieren werden automatisch zwei Kataloge erstellt (System und einer für die IIS Verzeichnisse). Es empfiehlt sich diese zu löschen, da das Indizieren der Dateien eine zeitaufwändige Angelegenheit ist.

Ein neuer Katalog kann über das Kontextmenü des Indexdiensteintrages erstellt werden. 

Beachten Sie, dass der Indexdienst vor Erstellen oder Löschen eines Katalogs beendet werden und danach wieder gestartet soll !

Geben Sie nun Ihrem neuen Katalog den Namen Test und verweisen Sie auf einen Pfad mit den zu indizierenden Dateien.

Nach erfolgreichem Erstellen des Katalogs sollten wir nun noch die Leistung des Indexdienstes verändern um eine sofortige Indizierung der Dateien zu erzwingen.

Wir stellen die Indexnutzung auf "Benutzerdefiniert" und gelangen über den Button "Benutzerdefiniert.." in ein Kontextmenü wo wir den Schieberegler "Indizierung" auf "Sofort" ändern.

Achtung: Auf das Ändern der Indexdienstleistung sollten Sie im produktiven Betrieb verzichten da dies zu einer stark steigenden Prozessor- und Speicherlast führen kann. Für unser Beispiel ist dies aber recht da wir sofort mit dem neuen Index arbeiten können !

Nun können Sie den Indexdienst wieder starten und dieser sollte sofort mit dem Erstellen eines neuen IndexTables in Ihrem gewählten Verzeichnis beginnen. Dabei wird in dem Verzeichnis ein versteckter Ordner mit dem Namen catalog.wci erstellt.

Wie benutze ich den neuen Index in meinem VB.NET 2003 Source

Allgemeines
Jeder Katalog im Indexdienst kann von VB.NET aus über einen OLEDB Connection angesprochen werden. Dazu muss nur der richtige Provider gewählt werden. Der Connection-String für unseren Test-Katalog wäre in diesem Fall

Provider=MSIDXS; Data Source=Test;

Hier der komplette Sourcecode für einen Verbindungsaufbau über ein OLEDBConnection Objekt:

Dim strConn As String = "Provider=MSIDXS; Data Source=Test;"
Dim conn As OleDbConnection
conn = New OleDbConnection(strConn)
conn.Open()

Wenn die Verbindung auf die Datenbank erst einmal geöffnet ist können wir auf den Index normale SQL-Abfragen ausführen.

Volltextsuche
Wichtige Felder:
  1. Rank: % der Übereinstimmung
  2. Characterization: Inhalt der ersten Zeilen des gefundenen Dokuments
  3. Path: Dateipfad
  4. Filename: Dateiname
  5. Size: Dateigröße in Byte

Der SQL String würde dann so aussehen:

strSQL = "Select Rank, Characterization, Path, Filename ,size FROM SCOPE() WHERE CONTAINS Suchbegriff"

Wie bei Googles erweiterter Suche kann man auch beim Indexdienst nach Wortgruppen oder genauen Wortlauten suchen. Dazu können mehrere Wörter mit AND und OR Verknüpfungen versehen werden oder eine sogenannte FREETEXT-Suche verwendet werden.

Beispiele:

"Select Rank, Characterization, Path, Filename, size FROM SCOPE() _
  WHERE CONTAINS ('"Begriff 1" AND "Begriff 2"') ORDER BY Rank DESC"
 
"Select Rank, Characterization, Path, Filename, size FROM SCOPE() _
  WHERE CONTAINS ('"Begriff 1" OR "Begriff 2"') ORDER BY Rank DESC"
 
"Select Rank, Characterization, Path, Filename, size FROM SCOPE() _
  WHERE FREETEXT (Contents, 'Suchbegriff') ORDER BY Rank DESC"

Die Suchabfrage kann folgendermaßen ausgeführt werden:

Dim cmd As OleDbCommand
Dim adapter As OleDbDataAdapter
Dim ds As DataSet
 
cmd = New OleDbCommand(strSQL, conn)
adapter = New OleDbDataAdapter(cmd)
ds = New DataSet
adapter.Fill(ds)

Das resultierende Dataset kann dann z. B. an ein Datagrid gebunden werden:

Datagrid1.Datasouce = ds.Tables(0)

Dateisuche
Der Indexdienst kann nicht nur für eine Volltextsuche sondern auch für eine erweiterte Dateisuche verwendet werden. Dabei kann man auf Dateieigenschaften wie

  • DocAuthor,
  • DocTitle,
  • DocType,
  • Size, etc.
abfragen.

Beispiel:

"Select DocAuthor, DocTitle, DocType, Size FROM SCOPE"

Das Tutorial kann im PDF Format mit einem kompletten VB.NET 2003 WinForms-Beispiel unter  www.visualsoft-net.de heruntergeladen werden.
 

Dieser Workshop wurde bereits 18.433 mal aufgerufen.

Über diesen Workshop im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Workshop, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Workshops finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel