PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Suchen (und finden) mit PHP - Teil 1

Ein ungeschriebenes Gesetz der Applikationswelt ist, dass ein Programm welches mehr als 5 Bildschirmseiten Nutzdaten enthält, durchsuchbar sein sollte. Dabei gibt es verschiedene Schwierigkeitsgrade und unterschiedliche Suchdisziplinen. In dieser mehrteiligen Artikelserie möchte ich praktische Methoden zur Indexierung, Suche und Suchergebnisdarstellung vorstellen.

Ganz zu Beginn gibt es nichts als Rohdaten, die ausgewertet und durchsucht werden können. Zunächst ein paar allgemeine Beispiele (wahrscheinlich fällt jedem direkt eine konkrete Projekt-Anwendung ein):

  • Direkt durchsuchbare Dateien (PDFs, Word-Dokumente, Textdateien)
  • Undurchsuchbare Dateien mit in der Datenbank hinterlegten Meta-Informationen (Fotos, Grafiken)
  • Datenbank-Einträge bzw. Tabellenattribute wie Vorname, Name, PLZ und Ort einer Kontaktdatenbank
  • Volltext-Datenbankinhalte wie HTML-Code oder Texte einer CMS-Datenbank
  • Quelltexte resultierend aus einem Crawlerdurchlauf
  • Verschachtelte Verzeichnbezeichnungen aus einem Dateisystem

Jeder dieser Inhalte muss unter Umständen über eine Suche erreichbar sein und jeder hat seine eigenen Tücken, wenn es um die Indexierungsform geht. Als Index-Formen haben sich 2 besonders bewährt:

  • Verschlagwortung
  • Volltextindexierung

Aber wo findet der Schlagwortkatalog bzw. die Volltextindexierung ihre Anwendung? Wann nimmt man das eine oder das andere?

Die Verschlagwortung hat den Vorteil, das Inhalte gezielt indexiert werden können. Besonders heraus sticht die Möglichkeit, auch Schlagworte zu vergeben, die nur sinngemäß mit dem Thema zu tun haben oder sogar das komplette Gegenteil des Inhaltes sein können (Inverssuche). Der große Nachteil der Verschlagwortung ist die geringe Bandbreite. Man kann niemals alle Stichworte oder Schlagworte vergeben, die theoretisch möglich wären. Die Qualität der Verschlagwortung hängt einzig und allein an denjenigen, die suchen. Dann kommt es darauf an, dass zur Suche auch die vergebenen Schlagworte verwendet werden :) Und die sind in höchstem Maße subjektiv. Damit eine Verschlagwortung konsistent und objektiv wird, müssen echte Redakteure, die auf Verschlagwortung trainiert sind, die entsprechenden Stichworte vergeben.

Einsatz findet die Verschlagwortung vor allem bei Datenbanken, die kein direkt durchsuchbares Material beinhalten. Ins Auge fallen da vor allem Bilddatenbanken wie Photocase, Fotolia und Getty Images (um nur meine liebsten zu nennen).

Die klassische Indexierung oder Volltextsuche findet vor allem bei umfangreichen Texten Anwendung. Das Problem bei der Volltextindexierung ist gigantische Masse an Worten - die niemand braucht. Ich meine vor allem Bindeworte und der gleichen die für den Inhalt erst einmal unrelevant sind. Wichtig sind in erster Linie Subjekte und Prädikate, beispielsweise Produkt- oder Personennamen. Für die klassische Indexierung ist der folgende Ablauf des Indexierungsvorgangs charakteristisch:

  • Beschaffung des Inhaltes direkt aus einer Datei, Datenbank oder notfalls einem Konverter
  • Entfernung von Steuerzeichen wie HTML Tags oder PDF Markern
  • Vereinheitlichung der Wortschreibweisen
  • Entfernung von unnötigen Worten mit Hilfe eine Stoppwortliste
  • Zählen der unterschiedlichen Worte
  • Katalogisierung der gezählten Worte in einem Suchindex

Die einzelnen Schritte werden in einem späteren Teil genau erklärt und dann gibts auch praktische Beispiele, wie die Schritte konkret aussehen. Nun aber noch zur 3. und zwar sehr beliebten Suchmethode: Die direkte Suche. Meist aus Faulheit bevorzugen Entwickler die direkte Suche:

  • Nutzung von Datenbank Indizes
  • Suchen mittels Datenbankabfrage direkt in den betreffenden Datenbanktabellen

Der Vorteil der Suche liegt auf der Hand: Sie ist einfach zu implementieren und wird zum größten Teil auf dem DB Server durchgeführt. Man muss sich nur noch um die Ergebnisanzeige kümmern. Dazu kommt noch, das man keine aufwendige Indexierung benötigt und dann ist sie auch noch einfach zu erweitern. Unschlagbar? Nein! Denn die direkte Volltextsuche über eine Datenbank kann gerade bei großen Mengen an Inhalt super langsam sein, vor allem wenn es um das Durchsuchen von Volltext geht (MySQL indexiert nämlich nur die ersten paar 100 Zeichen von Volltext).

Die klassische Anwedung der direkten Suche ist z.B. eine Kontakt- oder PLZ-Datenbank. Man durchsucht bestimmte Tabellenattribute nach einem Wort und die gefundenen Datensätze werden angezeigt.

Fazit: (zum Schluss nochmal eine kurze Zusammenfassung)

Schlagwortsuchen eignen sich für nicht direkt indexierbaren Inhalt, der zum größten Teil über manuell hinterlegte Meta-Informationen definiert wird (Fotodatenbanken).

Volltextsuchen eignen sich für große Mengen an Text, der aus einer Datei oder Datenbank stammt (PDF- bzw. CMS Suche).

Die direkte Suche benötigt keinen Index und ist die schnellste und einfachste Lösung für Datenbanken bei denen bestimmte Tabellenattribute durchbar sein sollen, die keinen Volltext als Inhalt haben (z.B. Kontaktdatenbanken).

Wie genau eine gut programmierte direkte Suche funktioniert, wird in “Teil 2 - Die direkte Suche” erklärt, weitere Infos gibts die Übersicht über alle Artikel dieser Serie.

  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Suche funzt nicht - PSD-Tutorials.de - Forum meint dazu:

11. Juni 2007 um 21:17

[...] Suche funzt nicht Der phpblogger hat dazu gerade eine kleine Serie geschrieben: phpblogger.net

RSS für Kommentare zu diesem Artikel · TrackBack URI

Schreib Deine Meinung