Michael Schröpl: volltextsuche -. wie?

Beitrag lesen

Hi,

ich möchte für unsere verlagshomepage eine
volltextsuche zusammenbasteln, da unser index
aus allen nähten platzt. allerdings weiß ich
nicht so recht, wie und wo ich anfangen soll.
vielleicht kann mir jmd. von euch einen tip
geben? ich will kein vorgefertigtes skript!

beginne mit der exakten Aufgabenstellung.
Das ist praktisch unverzichtbar.

1. Was willst Du durchsuchen?
HTML-Dokumente eignen sich dafür sehr schlecht; sinn-
voll wäre es, deren Inhalt parallel in einer bereits
von HTML-Tags befreiten Form zu speichern und darin
zu suchen (so macht es die Suchmaschine hier).
Je mehr Du bereits während der Vorverarbeitung tun
kannst, desto weniger muß während der Wartezeit des
Besuchers erledigt werden.

2. Welches Format haben Deine Daten?
Ein HTML-Dokument ist mehr als ein byte stream.
Es enthält eine Überschrift, Metadaten, <h1>-Tags im
Inhalt, <strong>-markierte Begriffe und anderes mehr.
Willst Du dies alles - oder auch nur einen Teil davon

  • als einen langen String speichern oder als einzelne
    Felder?
    Letzteres (wie es die Suchmaschine hier tut) erlaubt
    Dir, einerseits nur in bestimmten Feldern zu suchen
    und andererseits die Trefferqualität und -sortierung
    davon abhängig zu machen, in welchem Feld der Such-
    begriff gefunden wurde (in einem Titel ist er wahr-
    scheinlich wichtiger als in einem Nebensatz).
    Bedenke auch, daß ein Treffer _in_ ein Dokument zeigen
    kann und nicht nur _auf_ ein Dokument. Wenn Du hier
    in SelfHTML suchst, wirst Du durch Trefferlinks nicht
    nur auf Dokumente, sondern auf Kapitel geleitet ...
    die Datenstruktur zwischen Dokumenten und Such-Index
    kann sich also durchaus unterscheiden! Je genauer ein
    Treffer (deep link), desto hilfreicher für den Leser.

3. Welchen Suchkomfort sollen die Anwender bekommen?
Eine Suche nach genau einem Suchbegriff liefert
tendentiell viel zuviele Treffer.
Der Anwender wird versuchen, diese Treffer einzu-
schränken. Deshalb gibt es bei der Suchmaschine dieses
Portals hier die Möglichkeit, mit AND und NOT die
Treffermenge zu reduzieren.

4. Sollen nur Worte oder auch Phrasen gefunden werden?
Im ersteren Falle läßt sich die Suche über einen
indexbaum-basierten Ansatz sehr performant gestalten
(Antwortzeit nahezu unabhängig vom durchsuchten Daten-
volumen); im letzten Falle gibt es nur mit komplexen
Methoden bessere Ergebnisse als eine sequentielle
Suche durch den gesamten Datenbestand (wobei dann die
Suchdauer direkt proportional zu diesem Volumen ist).
Die Suchmaschine dieses Portals hier ist eine solche
Phrasensuche, und entsprechend aufwändig.

5. Was machst Du, wenn es trotzdem zuviele Treffer
sind? Willst Du Blätter-Funktionen anbieten, oder
muß der Benutzer seine Anforderung neu (und ggf. ver-
feinert) stellen?
Die Suche hier kennt kein Blättern, dafür aber reich-
lich zusätzliche Filterfunktionen (schau Dir mal das
Suchformular an), und sie bietet dem Anwender dessen
zuvor formulierte Anfrage als Voreinstellung im näch-
sten Formular wieder an.

Viele Grüße
      Michael