Hi,
Wenn ich es denn erwerben würde^^
https://forum.selfhtml.org/?t=107053&m=664594
Wie dort beschrieben kann ich nicht mit getElement(s)by... auf Teile des Strings zugreifen...
Autsch, ja, meine Schuld, hab' ganz vergessen das Dein Server nicht auf XML eingestellt ist, 'tschuldigung.
...Du es schlicht vermeiden muß Dateien überhaupt erst zu laden.
Dazu müsste ich meinen bisherigen Ansatz natürlich überdenken, obwohl ich die Idee so erstmal als recht gut eingestufft habe ;-)
Ach, da wirst Du in Deinem Leben noch so manche vermeintlich gute Idee wegschmeißen müssen, glaub's so einem altem Sack wie mir ruhig ;-)
Das kannst Du, in dem Du die Dateien _vorher_ durchsuchst und das Ergebnis in die Suche direkt einbaust. Ene gute Methode dafür ist der beschriebene Inverted Index. Da ist einerseits sehr viel Information drin, andererseits aber auch kein Volltext.
Das sollte ich mir dann wohl doch mal ansehen... SelfHTML ist da zwar nicht das beste Beispiel, da der Umfang doch recht groß ist
Eigentlich nicht, das ist eine schöne Größe zum probieren.
aber vll liefert mir ja Google noch was brauchbares... Mit ist da momentan der Aufbau noch nicht ganz klar. Okay, die Suchwörter kommen in ein Feld oder vgl.bares aber wo/wie legst Du dann die Trefferliste bzw Seiten fest?
keywords[0] = new Array ('Wort1', 'Wort2', 'Wort3', 'Wort4', ... , 'Wortn', seite.html'); ?
Das hätte in der Konstellation den Nachteil, das ich für jede Seite ein INDEX keywords[] anlegen müsste - sicher nicht Sinn der Sache.
Eine Zweite möglichkeit wäre, jeden Suchbegriff zu spezifizieren und den Dateien zuweisen
keyword[0] = new Array ('Wort1', 'seite1.html', 'seite2.html');
keyword[1] = new Array ('Wort2', 'seite2.html', 'seite4.html', 'seite5.html');
...
Ja, das ist ein Inverted Index. Drum heißt er ja auch _inverted_ Index ;-)
Die Dateien kommen da übrigens natürlich nicht mehr als vollständige Pfade rein, das wird schnell zuviel, sondern als Nummern. Diese Nummern werden dann in einem Extraarray wieder aufgelöst:
1,/pfad/zur/datei/foo
2,/pfad/zur/datei/bla
3,/pfad/zur/datei/die/nummer/drei/sein/soll
4,/pfad/dingens
Also jedes Wort den zutreffenden Seiten zuwesien. Ein asso. Array könnte das vll noch vereinfachen
Nein, einfacher geht's nicht mehr. Solltest Du wider Erwarten trotzdem etwas besseres finden: nur her damit!
- müsste man dann mal sehen aber elegant finde ich das auch nciht ;-)
Nicht elegant? Wie soll's denn noch eleganter gehen?
Na, _das_ möcht' ich sehen! ;-)
Ja Windows^^ XAMPP läuft zwar aber so richtig Lust hatte ich nicht, mir ein PHP Script zu schreiben und ein EINzeiler wäre das bei mir auch nicht geworden ;-)
Ja, das ist das Problem ohne vernünftige Shell oder wenigstens Perl.
Beim neuen MacOS hat man sie jetzt, braucht sie aber im Grunde genommen nicht, bei Unix hat man sie und braucht sie auch, nur bei Windows, da hat man keine braucht sie aber.
Du solltest Dir wenigsten ActivPerl besorgen, Perl erleichtert so einiges. Grundkenntnise in Perl sind eh zu empfehlen.
Was so langsam hoch kommt und die Stelle von Perl einzunehmen scheint ist Python. Aber bei Python kannst Du nicht mehr "schlampig rumhacken" wie bei PHP oder kryptisch werden wie bei Perl, da wird Wert auf gepflegtes Äußeres udn deutliche Aussprache gelegt. Das schmeckt nicht unbedingt jedem.
Mir übrigens auch nicht so recht ;-)
56 Dateien? In Worten: sechsundfünfzig? Bei insgesammt 1446, dem fast sechsundzwanzigfachen? Nene, Kollege, so wird das nix mit dem Benchmark ;-)
Das sind aber 7mal mehr als bisher (möchte nicht wissen, was das an Zeit im Netz gekostet hätte) :-)
Ja, das meinte ich damit: Bottleneck ist das Laden selber.
Ich habe hier runde 50.000 HTML-Seiten (falsch: Pfade mit dem Teilstring ".html", wie gleich zu sehen) auf der Platte (49411 um genau zu sein und mit ziemlich genau 400 MiB), die kann ich ja mal mit Bordmitteln nach dem String "html" (nur kleingeschrieben) durchsuchen.
$ sum=0;for i in locate .html| grep -v ' '
;do j=/usr/local/bin/sizeof $i
; sum=$[$sum+$j];done;echo $sum
419272273
$ time for i in locate .html| grep -v ' '
; do fgrep -q html $i;done
[22 Fehler: war entweder ein Verzeichnis mit ".html" drin oder kein Zugriff erlaubt. Rund 300 kib Gesamtgröße]
real 10m19.340s
user 1m25.630s
sys 4m0.430s
Auf einem Duron 1200 mit 512 MiB RAM (die waren aber schon ziemlich voll: zwischendurch kam hin und wieder ein Paging dazwischen). 'ne ganz schön lahme Platte hab' ich wohl. Gut, war ja auch billig gewesen ;-)
Also, wie gesagt: vermeide es so weit als möglich Dateien zu holen, dann klappt's auch mit der Suche Online.
so short
Christoph Zurnieden
PS:
Falls sich jemand über die etwas merkwürdige Größenmessung wundert: die Bash beschwert sich irgendwann numal über eine zu lange Argumentliste und bevor ich mir die jetzt auch noch zurechtfummel ... ;-)
CZ