Crawler API / Media / Parser

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.

Crawler API / Media / Parser

Beitragvon freak » Sa Nov 02, 2013 10:05 pm

Hallo zusammen

Ich habe die ein oder andere Frage, die sich mir in den letzten Tagen YaCy Nutzung so ergeben hat ...

1. Crawler API Parameter indexMedia=

Obwohl ich diesen Parameter auf off gesetzt habe, holt der Crawler Bilddokumente. Ich hätte erwartet, das auch Bilder als media(le) Dokumente gesehen werden und demzufolge nicht geholt werden.
Wie ist der Begriff Media im Zusammenhang mit dem Parameter definiert?

2. Crawler und deaktivierte Parsermodule

Über die Parserkonfiguration habe ich einige Parsermodule u.a. die für PDF deaktiviert. Trotzdem holt der Crawler PDF Dokumente legt diese im Cache ab, entscheidet aber dann lokal aufgrund des deaktivierten Parsers, das dieses Dokument nicht indexiert werden soll/darf.

Hier die dazugehörigen Logeinträge:

Code: Alles auswählen
...
I 2013/11/02 21:30:20 HTCACHE storing content of url http://www.domain.de/downloads/book.pdf, 3025766 bytes
I 2013/11/02 21:30:20 REJECTED http://www.domain.de/downloads/book.pdf - no parser available: mime type 'application/pdf' is denied (2)
I 2013/11/02 21:30:20 REJECTED http://www.domain.de/downloads/book.pdf - cannot load: not enqueued to indexer: not allowed: no parser available: mime type 'application/pdf' is denied (2)
...

Könnte der Crawler an dieser Stelle nicht eine Menge Traffic für sich bzw. für den Seitenbetreiber sparen, wenn er nur Dokumente holt, die er aufgrund der Parserkonfiguration auch indexieren würde?

3. YaCy geladene Parsermodule

Wie bereits im Punkt 2 angesprochen, habe ich einige Parser deaktiviert. Dennoch werden die Parser laut Logfile geladen, wenn Yacy (neu) startet. Dazu ein Auszug aus dem Logfile speziell für den PDF Parser:

Code: Alles auswählen
...
I 2013/05/01 23:21:14 PARSER Parser for mime type 'application/acrobat': Acrobat Portable Document Parser
I 2013/05/01 23:21:14 PARSER Parser for mime type 'text/pdf': Acrobat Portable Document Parser
I 2013/05/01 23:21:14 PARSER Parser for mime type 'applications/vnd.pdf': Acrobat Portable Document Parser
I 2013/05/01 23:21:14 PARSER Parser for mime type 'application/x-pdf': Acrobat Portable Document Parser
I 2013/05/01 23:21:14 PARSER Parser for mime type 'text/x-pdf': Acrobat Portable Document Parser
I 2013/05/01 23:21:14 PARSER Parser for mime type 'application/pdf': Acrobat Portable Document Parser
I 2013/05/01 23:21:14 PARSER Parser for extension 'pdf': Acrobat Portable Document Parser
...

Werden die Parser wirklich geladen, oder ist das nur ein Logeintrag der generell beim hochfahren von Yacy kommt?
Könnte man hier nicht noch etwas Speicher sparen, wenn deaktivierte Parser nicht geladen werden?
freak
 
Beiträge: 21
Registriert: Do Okt 10, 2013 10:59 pm

Re: Crawler API / Media / Parser

Beitragvon Orbiter » So Nov 03, 2013 11:49 am

Hi freak!

Deine Analyse macht Sinn, insgesamt ergibt sich hier für mich das Bild das das Ganze ein wenig renoviert werden sollte. Ich beantworte deine Fragen mal in anderer Reihenfolge, weil dadurch die Argumente in der richtigen Reihenfolge kommen:

zu Punkt 2)

Leider ist es nicht so einfach, genau die richtigen URLs zu laden und dabei nicht Daten zu verpassen die zu Parsern gehören die nicht deaktiviert sind. Grund: manche Dateitypen erkennt man nicht an der Extension des Filenamens, sondern am mime-type. Diesen sendet der httpd aber erst im http-header mit. Folglich gibt es manchmal mehrere Parser, die in Frage kommen, daher registrieren sich alle Parser mit den Extensionen und mime-types, für die sie zuständig sind. Wenn aufgrund dessen mehrere Parser in Frage kommen, so werden die auch alle gefragt und dann geschaut ob ein Parser durch Werfen einer Exception 'aufgibt'. Schliesslich gibts noch einen generischen Parser, der immer dazugenommen wird und der nur die URL als Dateninput nimmt. Der kann dafür aber auch Mediatypen gut parsen, bsp. bei Namen von Videodateien die CamelCases bei der Benennung verwenden, die tokenisiert der generische Parser dann richtig.

Also gibt es ausser den Parsern noch eine andere Regel, die entscheidet ob eine Datei geladen wird: alle ausser die, die in der Klasse Classification in den Medientypen apps, audio, video, ctrl drin stehen. Das sind diese:
Code: Alles auswählen
        final String apps = "7z,ace,arc,arj,apk,asf,asx,bat,bin,bkf,bz2,cab,com,css,dcm,deb,dll,dmg,exe,java,gho,ghs,gz,hqx,img,iso,jar,lha,rar,sh,sit,sitx,tar,tbz,tgz,tib,torrent,vbs,war,zip";
        final String audio = "aac,aif,aiff,flac,m4a,m4p,mid,mp2,mp3,oga,ogg,ram,sid,wav,wma";
        final String video = "3g2,3gp,3gp2,3gpp,3gpp2,3ivx,asf,asx,avi,div,divx,dv,dvx,env,f4v,flv,hdmov,m1v,m4v,m-jpeg,mkv,moov,mov,movie,mp2v,mp4,mpe,mpeg,mpg,mpg4,mv4,ogm,ogv,qt,rm,rv,vid,swf,webm,wmv";
        final String ctrl = "sha1,md5,crc32,sfv";


Wenn ich nun die Dateien zu den Extensionen der deaktivierten Parser nicht lade, kann ein Fehler entstehen. Ich könnte einen Flag bei Crawl Start einbauen, das das Laden der deaktivierten extensionen unterdrückt. Wäre das ok?

zu Punkt 3)

Hier muss man den eigentlich Parser, der als library eingebunden wird und den Parser-Wrapper, der die Library aufruft unterscheiden. Der Wrapper gibt die Info, zu welchen mime-types und extensionen die Lib gehört weiter und muss daher auch geladen werden. Die eigentliche Library wird dadurch noch nicht instantiiert, das passiert nur wenn eine Datei solchen Typus auch geparst wird. Das sollte also kein Problem darstellen.

zu Punkt 1)
die indexMedia Option war mal zum Steuern so gedacht, aber im Laufe der Zeit habe ich auch aus dem Auge verloren was das eigentlich noch bewirkt. Das müsste ich tatsächlich mal aufräumen. Denke dir die Option mal weg, wir machen zwei neue Optionen hin:
- Switch zwischen 'Load all non-media files for parsing' und 'Suppress files with deactivated parsers file extension'
- Switch zwischen 'Index all documents which are linked using filename-parsers for deactivated file types' und 'Store only links for active parsers'.
Du könntest dann mit der jeweils 2. Option alle Image Links sowohl zum Laden unterdrücken und auch nicht im Index als Link haben. Dann verschwinden aber Links wie die hier: http://commons.wikimedia.org/wiki/File: ... _gross.jpg
Das ist ein html, hat aber ein jpg als Extension. man sieht es erst am mime-type, dass es html ist.
Orbiter
 
Beiträge: 5798
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 2 Gäste

cron