Zur Navigation

Webseitensuche geht nicht bei dynamischen seiten

1 Daniel (Gast)

Hallo, habe mit php eine webseitenssuche geschrieben....alles funktiniert und begriffe werden gefunden....ABER nicht wenn eine seite dynamisch erzeugt wird.

Meine suche.php öfnet also deine dynamische php-datei und liest den inhalt im body, aber da ist kein inhalt drin - dazu müßte die dynamische seite erstmal "angekickt" werden :-(

Ist eine suche somit garnicht möglich? Ich möchte keine extra stytische seiten ablegen wo der inhalt drin ist!

24.04.2010 03:18

2 Jörg Kruse

Durchsucht deine Suchfunktion die Dateien in den betreffenden Verzeichnissen? Auf diese Weise können natürlich nur statische Seten durchsucht werden. Wo sind die Inhalte der dynamscihen Seiten denn gespeichert - in einer Datenbank? dann müsstest du auch die Datenbank durchsuchen.

Eine Alternative wäre ein Crawler, der den Links folgt und die Seiten indiziert. Dann hat man die Inhalte zwar doppelt gespeichert, hat aber den Vorteil, dass man bei der Suche nicht zwischen statischen und verschiedenen dynamischen Inhalten untercheiden muss.

24.04.2010 15:01

3 Daniel (Gast)

>Durchsucht deine Suchfunktion die Dateien in den betreffenden Verzeichnissen?
Ja genau so läuft das, per rekursiv-funktion werden die inhalte der dateien ausgelesen....da sie aber dynamisch sind ist da nix drin :-(

Gibt es da ein lößsung um das zu bewerkstelligen?
Hast du vielleicht ein link zu solchen suchscripte in php?
Ich möchte das selber machen und nichts fertiges installieren (solche providertools).

danke

24.04.2010 16:48

4 Daniel (Gast)

hab ich glatt vergessen:
Die dynamischen inhalte kommen meist aus dateien und nicht aus der db.

24.04.2010 16:50

5 Jörg Kruse

Du könntest die Dateien durchsuchen, in denen die Inhalt gespeichert sind. Du musst dann natürlich in diesen Fällen die Links der Suchergebnisse anpassen, so dass diese auf die vollständigen Seiten verweisen.

25.04.2010 00:31

6 Daniel (Gast)

Hallo Jörg,
Hab die tage bissl rumgebastelt, jetzt funktioniert die suche einwandfrei...aber neue probleme tauchen auf:-)

Und zwar habe ich ein seitenclickcounter...jede seite die aufgerufen wird, dort wird entsprechen die anzahl der klicks erhöht....nun ist es aber so das die suche, alle seiten gleichzeitig jeweils um 1 erhöht:-(

Ich dachte mir, wenn ich von jeder seite eine kopie des contents in eine textdatei ablege, dann ist die suche auch sehr schnell und die seitenklicks werden auch nicht strapaziert!

Jetzt bräuchte ich etwas hilfe von dir:
Wie kann ich den Inhalt einer seite schön zerlegen?
Ich dachte da würden 2 bereich reichen, HEAD und BODY.
Aus dem head brauche ich nur <title> und event. description/keywords
Aus dem BODY alles was drin ist, und ohne TAGs...also nur den ascii-text.

Wie kann man das mit preg_match und den regEx anstellen das diese bereich sauber extrahiert werden?
danke erstmall

27.04.2010 18:41

7 Jörg Kruse

Vielleicht in etwa so (ungetestet):

$file = file_get_contents('example.html');

preg_match('/<title>(.+)<\/title>/i', $file, $matches);
$title = $matches[1];

preg_match('/<body>(.+)<\/body>/i', $file, $matches);
$body = strip_tags($matches[1]);

27.04.2010 20:54

8 Rudy

Zu beachten ist, dass strip_tags auch die alts der img rauslöscht, die bei Seiten mit bilderreichem Inhalt oft die einzige Basis für eine textbasierte Suche bilden. Die solltest Du vor dem strip_tags rausfiltern, z.B. so:

$body = preg_replace('@<img[^>]+alt="([^"]+)"[^>]+>@', ' $1 ', $body);

27.04.2010 22:53

9 Daniel (Gast)

Danke an Jörg und Rudy,

Ich werde mich mal da ranmachen und berichte hier wie das funktioniert.

Mittlerweilen ist mir noch ne andere idde gekommen:
Ich klönne beim auslösen des such-buttons eine session vergeben und im klickcounter immer abfragen ob die gesetzt ist, wenn gesetzt dann nicht hochzählen....aber da bleibt dann immer noch die zeit der suche :-(

Für meine rund 50 php-seiten benötigt die suche rund 9-11 sekunden, das ist sehr viel...deshalb wäre das idealer wenn ich den content aller seiten in einer datei sammle, da bin ich garnatiert unter 1 sekunde beim suchen.

ich melde mich zurück...danke

29.04.2010 20:57

10 Rudy

Ach so willst Du das machen... ich dachte eher an eine indexbasierte Suche, so wie Sphider es macht. Du hämmerst sonst den Server mit HTTP-Anfragen zu, jede Seite muss aufgebaut werden um durchsucht werden zu können, das macht es langsam.

29.04.2010 21:30

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]