Michael Schröpl: (ZU DIESEM FORUM) Ein Königreich für eine definierte Aufgabenstellung ...

Beitrag lesen

Eine Suche würde dann für jedes Suchwort wie folgt ablaufen:
   1.) Hashfunktion des Suchwortes berechnen (geht schnell).
   2.) Das Ergebnis wäre z.B. eine Zahl zwischen 0 und 9999.
       Die entsprechende Indexdatei wird geöffnet.
   3.) Alle Einträge (die in der oben erwähnten Form vorliegen) in dieser Datei
        durchsuchen, ob sie mit dem Suchwort übereinstimmen und gegebenenfalls
        die entsprechenden Archivlinks ausgeben.

Inzwischen habe ich das Such-Skript mal wieder in der Mangel gehabt. Dabei ist mir mehr und mehr bewußt geworden, was eine Schlagwortsuche gegenüber dem bisherigen Stand der Dinge alles nicht könnte - gerade die V2.x-features reizen die Möglichkeiten der Volltextsuche, die mir der aktuelle Index bietet, ziemlich aus.

Bis zum Beweis des Gegenteils gehe ich davon aus, daß die Aufgabenstellung, über die wir hier diskutieren, lautet: "Beschleunige die Archiv-Suche, ohne dabei die Funktionalität zu reduzieren."

Und wenn dem so sein sollte, dann stelle ich bezüglich eines jeden Ansatzes mit Verschlagwortung und/oder Datenbank folgende Fragen:

1. Wie wird eine Suche mit regulären Ausdrücken realisiert? ("LIKE %" kann viel weniger und nutzt zudem den binären Indexzugriff nicht, ist also langsam.)

2. Wie wird eine Suche nach Teilworten realisiert, die kein Präfix eines Schlagwortes sind?

3. Wie wird eine Suche nach Phrasen realisiert, die Teilworte enthalten? (Das Verfahren, welches Andreas vorgeschlagen hat, findet m. E. *nicht* die Zeichenkette "efan Mün".)

4. Wie wird eine Suche nach "intelligenten Umlauten" (Münz => Muenz oder Münz) realisiert? (Das ist ggf. äquivalent zu 1.)

5. Wie wird eine Suche optional mit oder ohne Berücksichtigtung von Wortgrenzen realisiert?

6. Wie wird eine Suche optional mit oder ohne Berücksichtung von case-Sensitivität realisiert?

Dies alles kann das derzeitige Such-Skript, weil seine Suchtechnik bewußt auf Volltextindex ausgelegt ist - und *dort* geht all dies mit regulären Ausdrücken ziemlich einfach (wenn auch nicht beliebig performant).