ASCII: Suchmaschinen mit PHP - Wie?

Moin
Ich programmiere an einer eigenen Seite und benötige dafür eine Suchmaschine (Volltextsuche).
Nach welchem Prinzip soll ich die programmieren? Soll ich jede Datei einzeln durchsuchen, oder eine einzige Datei machen, in der alles noch einmal drin steht? Datenbanken will ich nicht verwenden.
Thank You!
ASCII

  1. Nach welchem Prinzip soll ich die programmieren? Soll ich jede Datei einzeln durchsuchen, oder eine einzige Datei machen, in der alles noch einmal drin steht?

    Das ist Jacke wie Hose.

    Datenbanken will ich nicht verwenden.

    Der Witz an einer Datenbank ist nicht alleine die Datenbank, sondern die Indizes, die schnelle Zugriffe ermöglichen.

    1. Sorry, aber ich werd aus deiner Erklärung net schlau...

      1. Sorry, aber ich werd aus deiner Erklärung net schlau...

        • Es ist egal, ob Du einzelne Dateien verwendest oder nicht.
        • Du solltest Dir Gedanken über eine Indizierung der Wörter auf allen Seiten machen, weil ein Index die Suche erheblich beschleunigt.
        1. Also eine einzige Datei mit anderen Worten?

          1. Also eine einzige Datei mit anderen Worten?

            nein - ohne db ist das quatsch.

          2. Also eine einzige Datei mit anderen Worten?

            Das hängt alles vom Umfang des zu durchsuchenden Projekts ab. Bei nur wenigen Seiten würde ich versuchen, bei jeder Suchanfrage alle Dateien direkt zu durchsuchen, weil damit gewährleistet ist, dass die Suche immer auf die aktuellen Daten zurückgreift und man außerdem relativ leicht nach Wortketten (suche "Dies ist ein Satz") fahnden kann.

            Es ist aber gut möglich, dass dieses Vorgehen schon bei ein oder zwei Dutzend HTML-Seiten einige Sekunden länger dauert (wenn auch keine Minuten), dann solltest Du mit einem Wortindex arbeiten.
            PHP bietet Schnittstellen für indizierte Datenverwaltung an, http://de.php.net/manual/de/ref.dba.php ist so ein Fall. Diese Bibliotheken sind sehr gut und werden teilweise auch von "richtigen" Datenbanken als Basis benutzt (MySQL greift zum Beispiel auch auf Sleepy Cats DB zurück), das ist also trotz der Miniaturschnittstelle kein mal eben hingehakter Müll.

            Durchforste in regelmäßigen Abständen (zum Beispiel einmal am Tag) oder besser noch nach jeder Änderung alle Seiten und sortiere die enthaltenen Wörter in eine solche Datei ein, das Wort als Schlüssel, als Daten die URLs der dazu gehörenden Seiten. Bei einer Suchanfrage brauchst Du dann nur noch auf diese Datenbank zuzugreifen und solltest in Sekundenbruchteilen ein Ergebnis erhalten.

            Die Suche nach Sätzen ist dann allerdings knifflig, aber vielleicht ist das auch gar nicht so dringend nötig.

        2. Hallo du da draußen,

          • Du solltest Dir Gedanken über eine Indizierung der Wörter auf allen Seiten machen, weil ein Index die Suche erheblich beschleunigt.

          Wo wir gerade beim Thema sind, habe ich auch noch eine Frage:
          Wie genau gestaltet man denn so einen Wort-Index? Was ist, wenn ich den Benutzer auch nach zusammenhängenden Wortketten suchen lassen können will? Oder nach ganzen regulären Ausdrücken? Denn wenn ich nur eine Liste mit allen Wörtern habe, die vorkommen, kann ich das ja schlecht realisieren.

          Grüße von hier drinnen, aus Biberach an der Riss,
          Candid Dauth (Dogfish)

          --
          »Bismarck biss Mark, bis Mark Bismarck biss!«
          http://cdauth.net.tc/
          ie:{ fl:( br: va:} ls:[ fo:| rl:( n4:( ss:) de:> js:( ch:| sh:( mo:) zu:|