Re: [Wikide-l] Wie verarbeitet man die neue XML-Datei?

elwp at gmx.de elwp at gmx.de
Fr Aug 5 14:24:37 UTC 2005


Daniel Herding:
> Ich habe für den PyWikipediaBot einen SAX2-Parser in Python geschrieben, 
> der das pages_current-Dump liest [1]. Der funktionierte zwar 
> einwandfrei, aber leider war er zu langsam, er benötigte mehrere 
> Stunden, um das Dump zu durchlaufen.
> 
> Darum habe ich mich für eine etwas unsaubere Lösung entschieden. In der 
> aktuellen Version wird einfach ein regulärer Ausdruck verwendet, der 
> einen Eintrag matcht [2, suche nach Rpage]. Das ganze läuft jetzt etwa 
> 10 bis 20 Mal so schnell wie die Version mit dem SAX2-Parser.

Werden denn da auch & , < und > in den Textblöcken ersetzt?
Ich kann zwar kein Python, aber das hätte ich eigentlich finden müssen.
Genau diesen Entwicklungsweg habe ich nämlich auch mit Perl hinter mir:
Erst habe ich XML::Twig verwendet, was viel zu langsam war. Dann habe
ich es selbst geschrieben mit einem regulären Ausdruck zur Ersetzung
von & usw.. Das war aber immer noch zu langsam. Dann habe ich die
Ersetzung mit einer C-Funktion neu geschrieben, was das Ganze noch mal
um den Faktor 2.5 beschleunigt hat. Beim Dump der aktuellen Versionen
ist das vielleicht noch egal (ca. 10min/4min), aber beim vollen Dump
(der momentan unvollständig ist und vollständig ca. 12GB lang sein
müsste) macht das schon einen Unterschied.

-- 
GMX DSL = Maximale Leistung zum minimalen Preis!
2000 MB nur 2,99, Flatrate ab 4,99 Euro/Monat: http://www.gmx.net/de/go/dsl