DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Eine eigene Suchmaschine mit NT bauen

Seit Windows NT 4.0 und Option Pack gibt es einen Index Server. Dieser durchsucht kontinuerlich Verzeichnisse und erstellt einen Index.
Im Gegensatz zu normaler Verzeichnissuche ist das Ergebnis schneller verfügbar. Ausserdem kann auf die Schnittstellen des Index Servers aus Software einfach zugegriffen werden. Der Indexserver hält den Index immer aktuell. Wenn Sie nun gößere Dateien in indizierte Ver-zeichnisse legen, wird der Indexserver umgehend aktiv. Die Größe des Indexes beträgt ca. 40 % der Dateigrößen. Der Indexserver ist sehr intelligent. Er berücksichtigt NTFS Berechtigung. Das heißt, das nur angezeigt wird, worauf der Suchende zumindestens ein Leserecht hat. Ein weiteres Highlight ist die Sprachenunterstützung. Der Index Server erkennt die Landessprache und nimmt Wörter wie "und" oder "nein" nicht in den Index auf um Platz zu sparen.
 
Der Indexserver nimmt nicht alles was er kriegen kann. So macht es z.B. keinen Sinn Exe Dateien zu indizieren. Je nach installierten Filter werden unterscheidliche Arten von Dokumenten indiziert.
· Office
· HTML
· Text
· Mail und News

Die Sperrlisten werden in den NOISE Dateien gespeichert. Diese ha-ben als Endung das jeweilige Land als z.B. für Deutschland NOISE.DEU. Diese können Sie mit einem Textedit öffnen und ändern.

Sie können unterschiedliche Verzeichnisse in Katalogen zusammenfassen. Je Katalog wird ein Index erstellt. Je mehr Kataloge Sie erstellen desto mehr Resourcen benötigt der Indexserver. Von Vorteil ist allerdings, das der Benutzer in einem speziellen Katalog (z.B. Datenblätter) suchen kann und dies schneller ist.
Die Verwaltung des Indexservers erfolgt unter Windows 2000 unter Computerverwaltung- Dienste. In der MMC können Sie den Indexserver Starten oder Stoppen. Außerdem erfahren Sie dort die Information über den Status der Indizierung und des Servers.
Ideal ist der Indexserver z.B. für ein Content Management System. Benutzer stellen Ihre Dokumente in einer Folderstruktur zur Verfügung. Die Zugriffsrechte sind auf Verzeichnisebene definiert. So können nur z.B. Konstrukteure und Chefs auf den Ordner Zeichnungen zugreifen.
Aus ASP Seiten heraus können Sie nun den Indexserver steuern. Es gibt dafür ein eigenes Zugriffsobjekt.

set Q = Server.CreateObject("ixsso.Query")

Als vollständige Beispielanwendung können Sie Query.ASP aus dem Windows\Help\iishelp\misc Verzeichnis nehmen.
 
Auch ADO können Sie für die Abfrage verwenden. Der Vorteil ist, das Sie ein Recordset als Ergebissmenge erhalten und entsprechend navigieren können.

<%
strConn="Provider=MSIDXS;Data Source=Web"
SET con= Server.CreateObject("ADODB.Connection")
con.Open(strConn)
suchString=" SELECT FileName FROM SCOPE('""/""') WHERE CONTAINS('""Text""')>0"
set rs=con.Execute(suchString)
do while not rs.eof
 Response.write("<br>" & rs("FileName"))
 rs.movenext
loop
%>

Mögliche Rückgabewerte aus der Query
· DocTitle ? Titel des Dokmentes (z.B. aus Office)
· DocSubject ? Der Betreff
· DocCreatedTM - Erstellungsdatum
· DocAuthor - Autor
· vPath ? Der virtuelle Pfad um es später zu öffnen
· Size ? Dateigröß in Bytes
· Characterization ? Eine kurze Zusammenfassung aus den ersten 300 Worten.
· Rank ? Wie genau ist der Treffer
Ein Select * ist nicht erlaubt. Die Syntax ist auch stark Fehleranfällig. Wie Sie sehen muss der SuchString sehr Aufwendig zusammengesetzt werden.  Wenn Sie die Datasource (= Katalog) weglassen, wird in allen Katalogen gesucht.
Um eine Vollständige Suche zu realisieren müssen Sie eine Eingabe-feld und eine Anzeigeliste realisieren.
 
Im Index Server können Sie mehrere Kataloge anlegen. Jeder Katalog enthält eine Reihe von Verzeichnissen.  Den Katalog geben Sie im Scope des Suchstrings an. Wenn Sie einen "/" nehmen, werden alle Kataloge durchsucht.

<%
strConn="Provider=MSIDXS"
SET con= Server.CreateObject("ADODB.Connection")

con.Open(strConn)
suchString=" SELECT FileName,vPath FROM SCOPE('""/""') WHERE CONTAINS('""Text""')>0"
set rs=con.Execute(suchString)
do while not rs.eof
 Response.write("<br><a href=" & rs("vPath")& ">" & rs("FileName") & "</a>")
    rs.movenext
loop
%>


Eine vollwertige Suchmaschine können Sie mit dem Indexserver allerdings nicht installieren. Das Konzept beschränkt sich auf einen Server. Durch die dauernde Aktualisierung des Katalogs werden auch relativ viel Systemresourcen benötigt.
Um eine Suchmaschine wie Web.de oder Altavista zu bauen, könnten Sie den Indexserver aus dem Produkt Site Server 3.0 verwenden. Dieser ermöglich es mehrer Server mit der Erstellung des Kataloges gleichzeitig zu beschäftigen. Die Abfrage kann dann wieder durch andere Server realisiert werden. Die Erneuerung des Kataloges ge-schieht zeitgesteuert nach Regeln. So haben sie ein skalierbare Lö-sung. Je nach Bedarf werden einfach Server dazu gestellt.

 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 05.05.2001
  Gültig bis: 07.06.2001
20 Ratings
Bewertung: 75,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG