Sven Rautenberg: voll-text suchmaschine bei bestehenden HTML-Seiten

Beitrag lesen

Moin!

mein chef will eine (volltext-)suchmaschine in unser intranet integrieren.
soweit eigentlich keine sache. allerdings wüßte ich nicht, wie man sowas unter den gegebenen umständen mit vertretbarem aufwand angehen sollte, aber bevor ich seine träume kaputt mache, würde mich mal eure meinung dazu intressieren.

Geht nicht gibts nicht. Ist alles nur eine Frage der Performance.

es besteht ein intranet, rein statisch, aus ca. 400-500 HTML-Dokumenten, die mehr oder weniger (eher weniger) "logisch" abgelegt sind - recht chaotischer zustand.

Die sind aber doch alle im Verzeichnisbaum unterhalb des DOCUMENT_ROOT. Also kannst du ein Skript schreiben, welches den DOCUMENT_ROOT und alle Unterverzeichnisse nach (HTML-)Dateien durchsucht und diese Dateien dann nach dem gesuchten Text. Ist in PHP schätzungsweise in nicht mehr als 30 Zeilen erledigt. Nur dauert das möglicherweise eine Weile, weil natürlich viel Festplattenperformance notwendig ist - für jede Suche erneut.

Bessere Ergebnisausgabe kriegst du, wenn du die Fundstellen noch bewertest:

  • Wird der Text in einer Überschrift <h1..6> gefunden, ist das wertvoller, als wenn er in <p> steht.
  • Wird der Text in den Meta-Keywords oder der Description gefunden, kann das auch wertvoller sein, als ein schlichtes <p>.
  • Mehrfaches Auftreten des Suchbegriffes ist natürlich wertvoller.
  • ...der Phantasie sind keine Grenzen gesetzt.

Anhand der Bewertung sortierst du deine Fundstellen dann und gibst sie aus.

als server wird seit kurzem ein apache benutzt, was jetzt endlich auch die nutzung von PHP ermöglicht. ein mySQL server kann ebenfalls mitbenutzt werden.

MySQL kann dir eventuell helfen - aber der Volltext-Index, den es dort gibt, ist nicht unbedingt das, was du willst, weil du keinen Einfluß auf das Suchergebnis hast. Feinfühliger gehts eben mit einer eigenen Suchprozedur.

oder sagt ihr auch, daß sowas bei den vorraussetzungen nicht in vertretbarem aufwand zu machen ist?

Nein, eine kleine Suche zu programmieren ist erstens nicht sonderlich aufwendig, und zweitens sehr lehrreich.

Spannend wird's nur, wenn Performance gefragt ist. Dann _kann_ man mit Index-Dateien vielleicht mehr Erfolg haben (was dann aber keine Volltextsuche ist), oder mit einer anderen Datenhaltung (indem man die Inhalte der Dateien in einer schnelleren Datenstruktur verfügbar macht, beispielsweise in einer einzigen Datei gesammelt).

Bedenke: Die Suche dieses Forums durchsucht als Volltextsuche ebenfalls den kompletten Datenbestand innerhalb der Dateien. Das dauert, weil mal eben 300 Megabyte durchsucht werden könnten, aber es funktioniert.

--

 - Sven Rautenberg