Ervaringen met opensource internetarchiveringssoftware (NutchWAX vs Solr + WayBack).

16 views
Skip to first unread message

Jaap

unread,
Nov 12, 2010, 8:24:00 AM11/12/10
to webarchief-nl
Hallo allemaal,

hierbij een bericht waarin ik mijn kennis deel met betrekking tot het
indexeren van een internetarchief met opensource software.

Dit stukje kan interessant zijn voor zij die een internetarchief op
hun eigen manier willen doorzoekbaar maken (en dus niet perse
afhankelijk willen zijn van het gebruik van de WayBack Machine) en
hiervoor de nodige techneuten ter beschikking hebben.

Ik ga in dit stukje uit van enige technische kennis, maar schroom niet
om wat te vragen als het niet duidelijk is ;)

In dit stukje ga ik uit van een dergelijk scenario:

1. De gebruikte crawl software produceert ARC files (zoals het
populaire HERITRIX)
2. Van deze ARC files wordt een index gemaakt (hierdoor is o.a. free-
text search door het archief mogelijk)
3. Er wordt een eigen gebruikersinterface ontwikkeld (de uiteindelijke
webpagina voor je organisatie) die gebruik maakt van deze index.

Dus dit scenario staat tegenover een oplossing waar simpelweg de
WayBack Machine gebruikt wordt ter ontsluiting van een
internetarchief.

Ok laten we beginnen:

Als je gaat zoeken op een manier om je webarchief te indexeren, kom je
eigenlijk vrijwel altijd uit bij NutchWAX (http://archive-
access.sourceforge.net/projects/nutch/). NutchWAX is een extentie op
Nutch (http://nutch.apache.org/about.html) dat ook een soort web
crawler is. (met Nutch zelf heb ik nooit geexperimenteerd).

Met NutchWAX kan je in ieder geval op een redelijk eenvoudige manier
je collectie ARC files indexeren (NutchWAX gebruikt Lucene). Ik zeg
redelijk eenvoudig, omdat de documentatie van NutchWAX erg slecht is
(zelfs misleidend, er staan nog verwijzingen naar tutorials die
helemaal niet goed werken op de laatste versies...). Een lichtpuntje
hier is dat de mailinglist 'archive-access-discuss' (http://archive-
access.sourceforge.net/projects/nutch/mail-lists.html) erg goed is te
gebruiken om vragen te stellen. Degenen die veelal antwoorden zijn
leden van het Internet Archive en zijn erg behulpzaam.

Als je het eenmaal aan de praat hebt kan je gebruik maken van de
NutchWAX opensearch servlet (Java code) om je webarchief te bevragen.
Ik vond echter al gauw fouten in deze zoekinterface (soms worden er
half lege resultaten teruggegeven + het getal dat het totaal aantal
resultaten weergeeft klopt niet) en begon ik te denken aan het maken
van een eigen index en zoekengine m.b.v. Solr (http://
lucene.apache.org/solr/) wat tegenwoordig een erg vooraanstaand stukje
opensource software is voor het maken van indexes & zoekengines.

Hierdoor ben ik gaan experimenteren met Solr. Om een eigen index te
bouwen van een archief met ARC files heb ik gebruik gemaakt van de
Java library om ARCs uit te lezen (van the Internet Archive. Deze
library maakt deel uit van de HERITRIX code) in combinatie met de Java
libraries van Solr.

Het is vrij eenvoudig om met deze libraries een index te genereren.
Het is verder prettig om je zoekengine te kunnen baseren op de
mogelijkheden van Solr.

Wat ik nu moet benadrukken is dat mijn experimenten met Solr alleen
nog maar gericht waren op zeer kleine internetarchieven. Er is verder
nog niet nagedacht over het gebruiken van cloud/cluster techieken als
Hadoop (wat wel beschikbaar is in NutchWAX)

Het uiteindelijke prettige nieuws is dat de mensen van de Internet
Archive nu ook bezig zijn met het maken van een op Solr gebaseerde
oplossing. Zij willen dus ook langzamerhand af van NutchWAX en gaven
ook aan dat de architectuur van NutchWAX niet echt ideaal is
toegespitst op het gebruik ter indexatie van een internetarchief
(NutchWAX is dus een extensie van een soort crawler software).

Concluderend lijkt het er dus op dat een oplossing met:

HERITRIX (+bv WebCurator) + Solr + Java code een goede manier is om
met opensource software een eigen web applicatie te ontwikkelen
bovenop een internetarchief.

Als er mensen zijn die zich bezighouden met dit onderwerp, kijk ik
zeer uit naar advies en tips!

Vriendelijke groeten,

Jaap Blom

René Voorburg

unread,
Nov 18, 2010, 5:32:42 AM11/18/10
to webarchief-nl
Hoi Jaap,

Wereldwijd lijken veel partijen over te (gaan) stappen op Solr voor
het indexeren van webarchieven.

Op de KB is al enige tijd geleden een oplossing gerealiseerd met de
zoekmachine van Verity. De KB wil in de toekomst al (?) haar materiaal
gaan indexeren met Lucene/Solr. Ik heb daarom ook wat met die engine
geexperimenteerd.

Met een simpel bash-script in combinatie met de arcreader-
functionaliteit van Heritrix kan ik eenvoudig één voor één de
bestanden uit de arc-files lezen. In de huidige testopzet stuur ik
alle html-pagina's (op basis van het in het arc vastgelegde mime-type)
naar een Perl script dat zogenaamd aan boilerplate removal doet.
Hiermee wordt alle tekst die enkel te maken heeft met navigatie
uitgefilterd (dit gebeurt op basis van tag-dichtheid). Deze tekstuele
output gebruik ik om in het bash-script een xml-bericht te maken wat
Solr kan gebruiken voor indexering. Erg eenvoudig allemaal maar
effectief (en allemaal Open Source!).

Ik wil het proces verder verbeteren door niet meer het vastgelegde
mime-type te gebruiken maar zelf de opgenomen bestanden te
identificeren. Het vastgelegde mime-type is immers zeer onbetrouwbaar
(het is daarom vanuit het perspectief van preservation sowieso zinvol
om de vastgelegde bestanden te identificeren; twee vliegen in één
klap!). Bovendien wil ik graag meer dan alleen html-bestanden
indexeren. Hoe dat het beste kan ben ik nog aan het uitzoeken. Voor MS
Office-documenten (ik dacht alleen de niet op xml gebaseerde variant)
is er catdoc. Voor het omzetten van pdf's is er pdftotext. Hoe het
precies moet met OpenOffice of nieuwere MS-Office varianten of meer
obscure formaten heb ik nog niet uitgezocht.

Een van de beste tools voor identificatie lijkt DROID te zijn (van de
Engelse National Archives). DROID is echter erg traag (zeker sinds de
laatste versie, versie 5) en niet zo makkelijk te integreren in de
gebruikte bash-scripts. Ik overwoog uit oogpunt van performance daarom
de Unix file-tool te gebruiken maar die leverde niet de PRONOM
identifiers die je waarschijnlijk wil gaan gebruiken. Sinds kort is er
echter een heel mooi alternatief: fido. Fido is een python script dat
vele malen sneller is dan DROID maar wel de zelfde signature database
gebruikt (en dus ook PRONOM identifiers levert). De auteur (Adam
Farquhar) heeft het bovendien op mijn verzoek zo aangepast dat ik het
naadloos kan integreren in mijn scripts. Zie http://www.openplanetsfoundation.org/node/563
.

Een ander aandachtspunt is de facettering van de zoekdata. Om
effectief te kunnen zoeken is het handig/nuttig/noodzakelijk (?) om
meer te bieden van een bak met tekst waarop full text gezocht kan
worden. Daarom zijn we nu ook aan het nadenken over welke stappen /
verfijningen voor gebruikers zinvol kunnen zijn (en welke we uberhaupt
kunnen bieden op basis van de data die we vastgelegd hebben - of nog
eenvoudig kunnen toevoegen). Lijkt me ook een zinvol onderwerp om
ideeen over uit te wisselen. Een volgende keer!

Groet, René

Jaap

unread,
Nov 26, 2010, 8:16:05 AM11/26/10
to webarchief-nl
Hoi René,

goed te lezen wat je schreef over het identificeren van content dat
zich in de arc files bevind. Het lijkt er inderdaad op dat het
opgeslagen mimetype helemaal niet zo goed werkt. Nu ben ik ook bezig
met de arcreader en fido een Python programmaatje te maken dat de
juiste informatie/identificatie opslaat. Een mooi klusje voor een
vrijdagmiddag.

Het facetteren van zoekdata is iets wat heel erg interessant is en het
zoeken in een archief vele malen kan verbeteren. Wij kunnen binnenkort
aan de slag met het werken met een named entity webservice van de uva
(http://ilps.science.uva.nl/research/projects/bridge) die teksten kan
omzetten naar zinvolle/betekenisvolle termen/entiteiten (dus ook NL
teksten, er zijn al dergelijke webservices voor het Engels:
http://www.alchemyapi.com/api/ en http://www.opencalais.com/). Als ik
het goed heb zou dit project volgend jaar Maart opensource moeten zijn
en zou iedereen er gebruik van kunnen maken.

Aan de hand van named entities/concepten zou je je facetten moeten
kunnen definiëren. Iets waar ik heel erg naar uitkijk om uit te
zoeken. Het lijkt me fantastisch om hierdoor op een gedegen manier een
internetarchief te kunnen doorzoeken.

Dus ter opsomming een processing scenario van een archief:

1. doorloop de arc files en per record:
2. identificeer de juiste mimetypes/pronoms van alle content (met
fido)
3a. in het geval van HTML content: gebruik boilerplate removal
3b. in het geval van documenten (Word/pdf) gebruik tools als pdftotext
om de tekst te verkrijgen
4. identificeer NEs/concepten m.b.v. een geschikte webservice (veel
nog uit te zoeken, zie boven)
5. probeer van de herkende NEs/concepten facetten af te leiden en
indexeer het geheel

Als ik weer iets heb uitgeprobeerd laat ik het weten.

Groet,

Jaap
> naadloos kan integreren in mijn scripts. Ziehttp://www.openplanetsfoundation.org/node/563
Reply all
Reply to author
Forward
0 new messages