André Laugks: Dateien beim Suchen ausschließen

Hallo!

Es soll eine Suche realisiert werden. Es sollen Dateien (Webseite) durchsucht werden. Mit dem script wandere ich durch alle Verzeichnisse und durchsuche alle html-Dateien.

Nun sollen aber einige html-Dateien nicht durchsucht werden, weil es Frames oder Navigationsframes sind.

Als erstes kam mir eine Art ini-Datei in den Sinn. Dort kann man Kategorien angeben, Unterkategorien und die dazugehörigen html-Dateien. So kann man auch schön das Ergebnis sortiert angeben. Das mit der ini-Datei habe ich probiert. Die ini-Datei muß hier genau bearbeitet werden, keine Tippfehler bei den Dateinamen etc.

Als zweites, in jede Datei, die durchsucht werden darf, mit z.B. <!--suche--> in der ersten Zeile zu versehen. Ich schaue dann immer zuerst ob der Parameter eingetragen ist. Die Titel der Seite hole ich mir dann aus dem title-Tag, nach dem ich dann auch die Suchergebnisse sortieren kann.

Gibt es eine bessere Methode?

MfG, André Laugks

  1. Hi, André

    Es soll eine Suche realisiert werden. Es sollen Dateien (Webseite) durchsucht werden. [...] Nun sollen aber einige html-Dateien nicht durchsucht werden, weil es Frames oder Navigationsframes sind.

    Du könntest robots.txt berücksichtigen, da diese Datei ohnehin vorhanden sein dürfte/sollte.

    http://selfhtml.teamone.de/diverses/robots.htm

    LG Orlando

    --
    SELF-TREFFEN 2002
    http://www.rtbg.de/selftreffen/
    http://www.megpalffy.org/temp/penneninhh.html

    1. Hallo Orlando!

      Du könntest robots.txt berücksichtigen, da diese Datei ohnehin vorhanden sein dürfte/sollte.

      Das ist natürlich ein sehr smarter Ansatz. Die robots.txt ist "Standard", man kann sich schön drauf "stützen".

      MfG, André Laugks

  2. Halihallo

    Nun sollen aber einige html-Dateien nicht durchsucht werden, weil es Frames oder Navigationsframes sind.

    Als erstes kam mir eine Art ini-Datei in den Sinn. Dort kann man Kategorien angeben, Unterkategorien und die dazugehörigen html-Dateien. So kann man auch schön das Ergebnis sortiert angeben. Das mit der ini-Datei habe ich probiert. Die ini-Datei muß hier genau bearbeitet werden, keine Tippfehler bei den Dateinamen etc.

    Das gibt aber ganz schön was zu schreiben, nicht?

    Als zweites, in jede Datei, die durchsucht werden darf, mit z.B. <!--suche--> in der ersten Zeile zu versehen. Ich schaue dann immer zuerst ob der Parameter eingetragen ist. Die Titel der Seite hole ich mir dann aus dem title-Tag, nach dem ich dann auch die Suchergebnisse sortieren kann.

    Wäre es nicht wesentlich einfacher und schneller zu realisieren, wenn man:

    ---

    in der INI-Datei RegularExpressions definiert, welche Dateien ausgeschlossen werden sollen?

    z. B.

    /nav/
    /frameset/
    /^/test/index.html$/

    natürlich stellt dies einige Anforderungen an die Benennung der Dateien. Z. B. müssen alle HTML-Dateien, welche ein Frameset enthalten den String frameset enthalten (eg. /test/topframeset.html)

    ---

    man könnte auch eine INI-Datei erstellen, wo die Verzeichnisse eingetragen sind, welche Nutzdaten enthalten (dann müssen sich einfach alle anderen Dateien in anderen Verzeichnissen befinden).

    ---

    oder man stellt durch einige RegularExpressions fest, ob die Datei einen navigationstypische bzw. framesettypische Daten enthält.

    /<frameset>(*.?)</frameset>/
    /<script>(*.?)function show_nav()(*.?)</script>/

    ---

    warum muss den noch überprüft werden, ob es sich um ein Frameset/Navbar handelt, wenn diese Dateien doch gar kein <!--suche--> enthalten müssen? - Diese werden dann doch automatisch vor einer Durchsuchung befreit, oder?

    ---

    Man kann die Ergebnisse auch durch die path-Angaben/Erstelldatum/(Anzahl zutreffender Worte) sortieren. Je tiefer die Verschachtelung, desto unwichtiger ist das Ergebnis

    ---

    Viele Grüsse

    Philipp

    PS: Entschuldigung, falls ich die Frage nicht richtig verstanden habe. Mir scheint, als ob ich nicht wirklich helfen kann. Aber versuchen kann ich es ja trotzdem...

    1. Hallo Philipp!

      Das gibt aber ganz schön was zu schreiben, nicht?

      Zum Glück habe ich das nicht gemacht :-).

      Als zweites, in jede Datei, die durchsucht werden darf, mit z.B. <!--suche--> in der ersten Zeile zu versehen. Ich schaue dann immer zuerst ob der Parameter eingetragen ist. Die Titel der Seite hole ich mir dann aus dem title-Tag, nach dem ich dann auch die Suchergebnisse sortieren kann.

      Wäre es nicht wesentlich einfacher und schneller zu realisieren, wenn man:
      in der INI-Datei RegularExpressions definiert, welche Dateien ausgeschlossen werden sollen?

      Stimmt, mal wieder zu kompliziert gedacht (-:.

      natürlich stellt dies einige Anforderungen an die Benennung der Dateien. Z. B. müssen alle HTML-Dateien, welche ein Frameset enthalten den String frameset enthalten (eg. /test/topframeset.html)

      Das ist das Problem, die Dateien sind alle schon fertig.

      /<frameset>(*.?)</frameset>/
      /<script>(*.?)function show_nav()(*.?)</script>/

      Das finde ich auch eine sehr gute Idee.

      PS: Entschuldigung, falls ich die Frage nicht richtig verstanden habe. Mir scheint, als ob ich nicht wirklich helfen kann. Aber versuchen kann ich es ja trotzdem...

      Du hast mich genau richtig verstanden.

      Ich will die Suche so schreiben, daß man sie schnell in eine andere Seite integrieren kann, ohne groß was anpassen zu müßen. Nach bestimmten Tags zu suchen, ist da eine gute Idee. Auch die Idee von Orlando mit der robots.txt ist sehr gut.

      MfG, André Laugks

      1. Halihallo

        Als zweites, in jede Datei, die durchsucht werden darf, mit z.B. <!--suche--> in der ersten Zeile zu versehen. Ich schaue dann immer zuerst ob der Parameter eingetragen ist. Die Titel der Seite hole ich mir dann aus dem title-Tag, nach dem ich dann auch die Suchergebnisse sortieren kann.

        Wäre es nicht wesentlich einfacher und schneller zu realisieren, wenn man:
        in der INI-Datei RegularExpressions definiert, welche Dateien ausgeschlossen werden sollen?

        Stimmt, mal wieder zu kompliziert gedacht (-:.

        Der, dem das noch nie passiert ist, gratuliere ich von ganzem Herzen :-)

        /<frameset>(*.?)</frameset>/
        /<script>(*.?)function show_nav()(*.?)</script>/

        Das finde ich auch eine sehr gute Idee.

        Ich ja nicht schwarzmalen, aber diese Lösung halte ich (obwohl ich sie selber hatte, aber Selbstkritik soll ja positiv sein...) für ziemlich unperformant. Vielleicht wäre es sinnvoll, auch in angetracht, dass du das Script auch für andere Webseites benutzen wirst, zuerst ein Initialisierung-Programm über das Web laufen zu lassen, welches anhand oben genannter RegExpe die "validen/nützlichen" Dateien findet und diese dann vollautomatisch in die INI (oder was auch immer) - Datei schreibt.

        Ich will die Suche so schreiben, daß man sie schnell in eine andere Seite integrieren kann, ohne groß was anpassen zu müßen. Nach bestimmten Tags zu suchen, ist da eine gute Idee. Auch die Idee von Orlando mit der robots.txt ist sehr gut.

        Eben, nach bestimmten Tags zu suchen, aber nur einmal. z. B. start.pl um eine used-files.txt Datei anzulegen, welche alle Dateien enthält (oder besser noch: die eben nicht enthalten...), welche auf die RegExpe passen (oder eben nicht). Wär doch schade, wenn man _jedes_ mal _alle_ Dateien mit RegExpt durforsten müsste...

        Viele Grüsse

        Philipp

  3. Halihallo

    Als erstes kam mir eine Art ini-Datei in den Sinn. Dort kann man Kategorien angeben, Unterkategorien und die dazugehörigen html-Dateien. So kann man auch schön das Ergebnis sortiert angeben. Das mit der ini-Datei habe ich probiert. Die ini-Datei muß hier genau bearbeitet werden, keine Tippfehler bei den Dateinamen etc.

    vielleicht eine schnellere Möglichkeit:
    Mich würde es aufregen, wenn ich jedes mal die INI-Datei erweitern müsste, wenn eine neue HTML-Seite dazukommt deshalb:

    Jede HTML-Datei enthält folgenden Kommentar in der ersten/zweiten Zeile:

    <!--cathegory:<name>-->

    in der INI-Datei steht folgendes:

    sport=main
    WM=sport
    news=main
    recent-news=news
    old-news=news
    WM-Deutschland=WM
    mostviewed-news=news
    bug-fix-xxx=recent-news

    mit der Datenstruktur:

    <cathegory-name>=<parent-cathegory-name>

    dadurch wird die Struktur der Website erstellt:

    sport
      WM
         WM-Deutschland
    news
       recent-news
          bug-fix-xxx
       old-news
       mostviewed-news

    somit beschränkt sich der administrative Aufwand auf die Verwaltung der Kathegorien, nicht mehr auf jede Datei und man braucht sich nicht um das korrekte eintippen der Dateinamen gedanken zu machen (wohl aber der der Kathegorien).

    Als zweites, in jede Datei, die durchsucht werden darf, mit z.B. <!--suche--> in der ersten Zeile zu versehen. Ich schaue dann immer zuerst ob der Parameter eingetragen ist. Die Titel der Seite hole ich mir dann aus dem title-Tag, nach dem ich dann auch die Suchergebnisse sortieren kann.

    Warum müssen denn die Frameset und andere irrelevante Dateien in der INI-Datei ausgeschlossen werden, wenn man doch dort nur die <!--suche--> nicht einzufügen braucht?

    Viele Grüsse

    Philipp

  4. Hi!
    ich mache zwar keine Suche auf meiner Seite, aber ich habe ein ähnliches Problem gehabt, und zwar welche Tabellen von einem MySQL Dump ausgeschlossen werden sollen. leider kann man das nur positiv definieren, dann müßte ich alle Tabellen nennen, und jede Änderung oder neue Tabelle extra hinzufügen. Ich habe das am Ende über einen Array gemacht, in den ich einfach alle nicht  zu beacntenden Tabellen geschrieben habe, Du könntest Da alle Seiten eingeben, die nicht durchsucht werden sollen, das sind garabtiert nicht so viele, oder? Dann kannst Du bei der Suche einfach nur, Die Dateinamen, die nicht im Array vorkommen durchsuchen:

    // Tabellen, die nicht geloggt werden sollen:
    $tabellen_nicht = array ("log", "blz", "orte");

    // Dann generiere ich in einer Schleife den String an zu durchsuchenden Tabellen.
     if (!in_array ($row[0], $tabellen_nicht)) {
              $tables.=" ".$row[0];}

    in Deiner Suche müßtest Du halt in Deine Schleife oder wie auch immer Du die Dateien durchläufst auch nur gurz prüfen,

    if (!in_array($dateiname,$arrayname)) {
    //Datei durchsuchen}

    Als zweites wäre da noch die Umkehrung deiner Möglichkeit mit <--!suche-->, wqie wärs wenn Du einfach  in die wahrscheinlich viel weniger und sich seltener ändernden Dateien einfach <--!nosearch--> schreibst? Das dürfte sehr viel weniger Aufwand sein, aber kommt halt auf das Verhältnis an. Snst finde ich die Idee direkt mit Kategorien zu arbeiten sehr gut!

    Grüße
    Andrea