Crawlen von Foren REGEX

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

Crawlen von Foren REGEX

Beitragvon GIT-Hessen » Do Okt 16, 2008 9:21 am

Hallo,

ich soll einen Themenorientierte SuMa aufsetzen, jetzt habe ich aber ein Problem, das speziell bei foren auftritt.

Ich habe jede Menge Einträge "Seite wurde gelöscht ODER Der Zugriff verweigert", und außerdem sind auch jede Menge Seiten doppelt, weil das Forum ja auf jeden Post einzeln nochmal verlinkt.

Ich habe überlegt, die Daten mit: URL/.*[^(postid=)][^(userid=)].* zu filtern, habe die einträge aber trotzdem in der Suchmaschine. Kann mir bitte jemand helfen?


MfG Dominik
GIT-Hessen
 
Beiträge: 3
Registriert: Do Okt 16, 2008 8:32 am

Re: Crawlen von Foren REGEX

Beitragvon Huppi » Do Okt 16, 2008 9:30 am

Das könnte über das Erstellen einer Blacklist funktionieren, dann aber vermutlich für jede URL einzeln.

Ist aber ein guter Punkt, habe ich bei meiner Motorrad-Themensuche auch.
Huppi
 
Beiträge: 898
Registriert: Fr Jun 29, 2007 9:49 am
Wohnort: Kürten

Re: Crawlen von Foren REGEX

Beitragvon GIT-Hessen » Do Okt 16, 2008 10:08 am

kann ich das dann so machen wie ich es beschrieben habe, nur halt in der blacklist im filter, oder muss ich für jedes ausschlusskriterium auf dieser Seite eine url eintragen in die blacklist?

Bsp.:

url/.*[^(postid=)].*
url/.*[^(userid=)].*

oder

url/.*[^(postid=)][^(userid=)].*


andere frage: kann man irgendwo testen ob die regex auf die url matchen?
GIT-Hessen
 
Beiträge: 3
Registriert: Do Okt 16, 2008 8:32 am

Re: Crawlen von Foren REGEX

Beitragvon Orbiter » Do Okt 16, 2008 10:27 am

die Blacklist-Verwaltung sollte einen regexp-Tester haben, wenn nicht wäre das mal sinnvoll zu bauen.
Orbiter
 
Beiträge: 5792
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Crawlen von Foren REGEX

Beitragvon GIT-Hessen » Do Okt 16, 2008 11:34 am

wie kann ich meine Daten jetzt mit der Blacklist validieren, so das falsche urls rausgelöscht werden?

Danke für die schnelle Hilfe,
MfG Dominik
GIT-Hessen
 
Beiträge: 3
Registriert: Do Okt 16, 2008 8:32 am

Re: Crawlen von Foren REGEX

Beitragvon DanielR » Do Okt 16, 2008 11:47 am

Mit dem Index-CleanUp wird deine Blacklist auf deinen Datenbestand angewendet. Zu finden unter Index Administration -> Index CleanUp -> URLs
DanielR
 
Beiträge: 395
Registriert: Di Feb 12, 2008 2:22 pm

Re: Crawlen von Foren REGEX

Beitragvon Low012 » Do Okt 16, 2008 12:16 pm

Wenn ich das letztens richtig gesehen habe, erkennt der Blacklist-Cleaner nur Ausdrücke in der ursprünglichen Blacklist-Systax (z.B. *.domain.*/.*) und meldet bei korrekten RegEx, die aber nicht dieser Syntax entsprechen, einen Fehler. Ich habe mir fest vorgenommen, mir die Blacklistverwaltung in meinem Urlaub Ende des Monats mal genauer anzusehen udn habe mir auch schon eine entsprechende Notiz in meinem schwarzen Büchlein (Ja, ich habe auch sowas! ;)) gemacht.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: Crawlen von Foren REGEX

Beitragvon Sandimschuh » Di Nov 11, 2008 9:17 am

Hallo YaCyaner,

Ich bin noch recht neu in der YaCy-Welt und habe ein ähliches Problem wie oben beschrieben. Ich möchte eine themenorientierte Suma aufsetzen und habe dabei, vor allem auch bei Foren, das Problem, dass viele Seiten mehrfach indiziert werden und auch Übersichtsseiten, welche nur Links auf die Posts enthalten, in den Index aufgenommen werden.

Ich frage mich daher, ob es möglich ist, Filter für den Crawler und den Indexer unabhängig voneinander zu definieren? So kann der Crawler allen Links folgen, in dem er auch die Übersichtsseiten crawlt, indiziert werden dann aber nur die eigentlichen Posts, welche z.B. über ein Regex-Pattern in der URL erkannt werden.

Vielleicht gibt es solch ein feature ja schon. Wenn nicht, gibt es doch sicher eine Möglichkeit, das nachzurüsten. Gerne würde ich mich auch, so weit möglich, in die Entwicklung mit einbringen.

Grüße
Michael
Sandimschuh
 
Beiträge: 3
Registriert: Di Nov 11, 2008 9:01 am

Re: Crawlen von Foren REGEX

Beitragvon Low012 » Di Nov 11, 2008 11:07 am

Hallo! Willkommen im Forum!

Ohne in den Code geschaut zu haben: Es sollte halbwegs ohne größere Verrenkungen möglich sein, eine neue Kategorie zusätzlich zu Proxy, DHT etc. zu den Blacklisten hinzuzufügen. Wenn ich mich richtig erinnere, ist der Code zur Blacklistverwaltung so geschrieben, dass er sich einfach erweitern lässt. Zusätzlich ist dann noch ein Check im Indexierer notwendig. Bisher wird nur im Crawler gecheckt, oder? Ich habe im Moment leider keinen Zugriff auf meinen Peer, um das zu überprüfen.

Das müsste nur jemand machen... ;) Lesezugriff auf den Code im Subversion gibt es auch anonym: http://developer.berlios.de/svn/?group_id=3505, Schreibzugriff vergibt Orbiter bei Bedarf auf Anfrage.

Dann eine Blacklist für bekannte Foren (phpBB, yabb etc.) oder CMS zu erstellen und YaCy eventuell gleich mitzugeben, wäre vielleicht gar keine schlechte Idee.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: Crawlen von Foren REGEX

Beitragvon Sandimschuh » Mi Nov 12, 2008 8:21 am

Hallo L und danke!

Ich habe gestern mal in den Code reingeschaut. Ist ja ne ganze Menge - und ohne Kenntnisse vom grundlegenden Aufbau der Software stand ich da erst mal ganz schön im Wald ;)

Mein erster Gedanke mit dem Indexer-Filter war, den Filter beim Anlegen eines neuen Crawls mit anzugeben (ähnlich dem Filter für Domain und Subpath). Das scheint mir aber für die Umsetzung in der Software mit Änderungen an ziemlich vielen Stellen verbunden zu sein.

Wie wäre das mit der Realisierung über die Blacklist. Hätte man da auch die Möglichkeit, solche Filter einem bestimmten Crawler-Profil zuzuordnen? Oder würde der dann alle Crawls betreffen?

Von der Anforderung her, wäre dieser Filter für den Indexer nach meiner Vorstellung nicht unbedingt ein reiner Ausschlussfilter. Es wäre auch schön, bestimmte Seiten, auf die der Filter passt, explizit freizugeben und alle anderen von der Indexierung auszuschließen.
Sandimschuh
 
Beiträge: 3
Registriert: Di Nov 11, 2008 9:01 am

Re: Crawlen von Foren REGEX

Beitragvon Orbiter » Mi Nov 12, 2008 4:06 pm

Also das Crawlen von Foren würde ich auch gerne haben, nur ist mir bislang noch nicht eingefallen wie man einen Themen-Doublettentest bei Foren tatsächlich richtig hinbekommt. Mit reinen regulären Ausdrücken, die der User beim Crawl Start als Whitelist eingibt ist es möglichweise nicht getan. Mal ein Beispiel was ich meine: dieser Forumsthread hat die folgenden URLs:

Code: Alles auswählen
Über 'Probleme und Lösungen' auf Titel angeklickt:
http://forum.yacy-websuche.de/viewtopic.php?f=5&t=1533

den ersten Topic (GIT-Hessen) angeklickt:
http://forum.yacy-websuche.de/viewtopic.php?p=10641#p10641

den zweiten Topic (Huppi) angeklickt:
http://forum.yacy-websuche.de/viewtopic.php?p=10642#p10642

Wie soll man daran erkennen, dass alle drei den gleichen Thread bezeichnen? ich fürchte wir kommen hier nur mit einem Doublettencheck mit Hilfe des Double-Content-Checking weiter, das wir aber auch noch nicht haben aufgrund fehlendem Ähnlichkeitsmaß.

Sandimschuh hat geschrieben:Filter für den Crawler und den Indexer unabhängig voneinander zu definieren? So kann der Crawler allen Links folgen, in dem er auch die Übersichtsseiten crawlt, indiziert werden dann aber nur die eigentlichen Posts, welche z.B. über ein Regex-Pattern in der URL erkannt werden.

das sollte nicht so schwer zu machen sein, und macht übrigens auch sehr viel Sinn. Würdest du damit eine Chance sehen, dieses problem hier mit den Links die oben stehen zu lösen?
Orbiter
 
Beiträge: 5792
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Crawlen von Foren REGEX

Beitragvon Sandimschuh » Do Nov 13, 2008 9:50 am

Hallo Orbiter,

allein mit regulären Ausdrücken sehe ich für dein Beispiel auch keine Möglichkeit. Als erster Gedanke fällt mir zum Erkennen von Dupletten ein Hash über die komplette Seite ein. Somit wäre eine Seite eindeutig identifiziert und es könnte verhindert werden, dass eine Seite, auf die mehrere URLs verweisen, mehrmals indiziert wird.

Ich bin mit der Arbeitsweise von YaCy noch nicht sehr vertraut, ich nehme aber an, dass aus dem Wörter-Index direkt auf die zu einem Wort gefundenen URLs verwiesen wird. Dann würde in deinem Beispiel die Seite aber nur einmal für die erste verweisende URL gecrawlt und die zwei weiteren URLs würden (da erkannte Dupletten) nicht in den Index aufgenommen. Sehe ich das soweit richtig?

Wenn nun aber der Index noch eine Zwischenstufe erhält, in der Art Wort -> Seiten-Hash -> URLs, dann könnten auch weitere für eine Seite gefundene URLs dieser zugeordnet werden. Vielleicht wäre es auch möglich, zusätzlich noch die Bereiche zu merken, die über den Anker (z.B. #p10641) angesprochen werden. Aber wie das realisiert werden könnte, weiß ich grad auch nicht. Ist nur mal ne Idee.

Hier mal ein Beispiel für meinen Fall, der imho mit regexp zu lösen wäre:
Code: Alles auswählen
Eine Übersichtsseite, ohne und mit Kategorien und in verschiedenen Ausführungen:
http://tunertreff.de/forum/board.php
http://tunertreff.de/forum/board.php?category=Fahrwerke&kfz=BMW
http://tunertreff.de/forum/forum.php?category=Fahrwerke&kfz=BMW
http://tunertreff.de/forum/mix.php?category=Fahrwerke&kfz=BMW

Eine Topic Seite:
http://tunertreff.de/forum/board_entry.php?id=7057&page=0&order=last_answer&category=Fahrwerke&kfz=
http://tunertreff.de/forum/forum_entry.php?id=7057&page=0&order=last_answer&descasc=DESC&category=Fahrwerke&kfz=
http://tunertreff.de/forum/mix_entry.php?id=7057&page=0&order=last_answer&category=Fahrwerke&kfz=


Die board.php, forum.php, mix.php Seiten (oder nur eine davon) müssten gecrawlt werden, aber diese würde ich gerne von der indizierung ausschließen. Indiziert werden sollten dann nur die x_entry.php Seiten (oder nur eine davon). Dies sollte mit regexp möglich sein.
Sandimschuh
 
Beiträge: 3
Registriert: Di Nov 11, 2008 9:01 am

Re: Crawlen von Foren REGEX

Beitragvon Orbiter » Do Nov 13, 2008 2:56 pm

um Doublettentest geht es ja auch hier
viewtopic.php?p=11081#p11081
weiter.

Ich hab noch mal hin und her nachgedacht: ich glaube das die Forumsseiten sich immer am Blatt eines Suchbaumes eines Crawls befinden, und daher macht ein Nutzen einer Black/Whitelist fürs Indexieren keinen Sinn, denn die bräuchte man ja nur wenn man auf noch tiefer liegenden Seiten zugreifen will.

Vielmehr ist eine Blacklist für den Crawler notwendig: der bisherige Filter ist sowas wie ein must-match filter, wir brauchen nun einen must-not-match Filter. Damit könnte man beispielsweise in meinem Beispiel oben die viewtopic.php?p=10641 herausfiltern, und nur noch die viewtopic.php?f=5&t=1533 beachten (einfach die must-not-match nach '.*?p=.*' matchen).

Das verhindert aber nicht wie du schreibst das Indexieren der Übersichtsseite, wozu ggf. doch deine angeregte 'must-not-index' Filter notwendig wären.
Orbiter
 
Beiträge: 5792
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Crawlen von Foren REGEX

Beitragvon Orbiter » Fr Nov 14, 2008 11:18 am

ich hab den must-not-match filter jetzt eingebaut, SVN 5342. Du findest die Option wenn du einen neuen Crawl startest.
Meiner Meinung nach müsste es jetzt für ein PHPBB3 reichen, dort ein .*p=.* rein zu schreiben.
Muss ich nachher mal ausprobieren, wenn mein Kellerpeer das neueste Auto-Update hat.
Orbiter
 
Beiträge: 5792
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste