search engine indexingViele Betreiber privater oder auch kleiner Webseiten verzichten, oft gezwungener Masen, auf eine eigene Suche in ihrer Seite. Der Hauptgrund dafür dürfte die vermeintliche Komplexität einer Suche in der eigenen Seite sein.

search enginesZwar bietet heute schon einige Suchmaschinenbetreiber die Möglichkeit, eine Suche in die eigene Seite zu implementieren, doch ist das nichts anderes als eine Suche im Index des anbietenden Betreibers. Dabei ist nicht sichergestellt, dass sich auch wirklich alle Seiten der eigenen Website im Index der jeweiligen Suchmaschine befinden. Vor allem statische Seiten, deren Inhalt sich so gut wie nie ändert, fallen leicht aus dem Index. Auch Seiten die weniger frequentiert sind als andere, oder Seiten mit geringem Besucheraufkommen dürften sich nur schwer über längere Zeit im Index der großen Suchmaschinen halten. Um dem Besucher dennoch den Komfort einer Suche zu bieten, muss man wohl oder übel selbst Hand anlegen.

sql fulltext catalogeDie meisten Konzepte setzen wahrscheinlich in der direkten Suche im jeweiligen Datenspeicher an. Gerade der SQL-Server bietet hier schon einiges. Seine Volltextsuche ist wahrscheinlich eine seiner größten Stärken. Auch andere Datenbank-Systeme bieten ähnliches. Doch wo ist der Ansatz wenn keine DBMS genutzt wird? Wenn die Daten in XML-Dateien oder eine andere Dateisystembasierende Lösung verwendet wird? Oder wenn ich mich noch nicht festlegen will, welches System ich zur Persistierung meiner Daten verwende? Es kann auch der Fall auftreten, dass nur statische Seiten verwendet werden. Wo also hier ansetzen?

search engine robotIch würde sagen: Genau da, wo auch die Großen wie Bing, Google, Yahoo und wie sie nicht alle heißen, ansetzen; Im fertig gerenderten HTML. Das hat den entscheidenden Vorteil, dass mich der Backend-Bereich nicht zu interessieren hat. Selbst wenn ich auf einmal von XML-Dateien auf SQL-Server umstelle, betrifft das die Suche an sich eigentlich kaum. Die enthaltenen Daten in der gerenderten Seiten sollten nach wie vor die selben sein.

Wie muss so eine eigene kleine “Suchmaschine” nun aussehen?
In etwa genau so wie eine Große mit dem Unterschied, dass in der eigenen Website kein Spider, oder auch Crawler genannt, verwendet werden muss da die Struktur sowie die zu indizierenden Seiten ja bekannt sind. Lediglich der Inhalt der Seiten muss erfasst, analysiert, katalogisiert und zur Abfrage vorgehalten werden.
In der Zusammenfassung ergeben sich daraus folgende benötigten Komponenten:

  • Einen Index samt Mechanismus, der alle Seiten erfasst und zur Analyse vorhält.
  • Ein Mechanismus zur Analyse der einzelnen Seiten, sowie deren Aufbereitung zur Speicherung in einem Katalog.
  • Einen Katalog, der die analysierten Seiten zur Verwendung durch einen Abfragemechanismus vorhält.
  • Einen Mechanismus zur Abfrage des Katalogs sowie die Bewertung der erzielten Ergebnisse nach Relevanz.
  • Einen Mechanismus zur Ausgabe der bewerteten Ergebnisse in einer darstellbaren Form.

So auf den Punkt gebracht, sieht die Implementierung einer Suche schon nicht mehr so kompliziert aus. Für den Moment ist das Konzept zwar noch sehr abstrakt gehalten, doch im im Verlauf der Artikelserie wird jeder Punkt auf der Liste konkretisiert werden.

In den Folgeartikeln werde ich nach und nach auf die einzelnen Komponenten eingehen. Im Großen und Ganzen steht das Konzept und ist zu großen Teilen bereits lauffähig umgesetzt. Doch wie so oft bei Projekten die in der Hand einer einzelnen Person liegen, kann eine neue Erkenntnis tiefgreifende Änderungen der Details nach sich ziehen.
Dies ist auch einer der Gründe, warum ich dieses Thema als Artikelserie angelegt habe. Zum einem erhoffe ich mir verschiedenen Meinungen zum grundlegendem Konzept und zum anderen unterschiedliche Blickwinkel auf die jeweiligen Lösungsansätze.

Technorati-Tags:  |  |  | 
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitte "kicken" sie ihn.
kick it on dotnet-kicks.de