Xapian is een open source zoekmotorbibliotheek met een GPL-licentie. Net als Lucene is Xapian ontworpen voor ontwikkelaars, niet voor eindgebruikers. Het is dus geen zoekmotor op zich, maar een bibliotheek waarmee je vrij eenvoudig een zoekapplicatie kunt (laten) bouwen en zoekfuncties met geavanceerde indexering en zoekfaciliteiten kunt toevoegen aan je eigen applicaties, ook webapplicaties. De populaire Recoll-zoekapplicatie kan echter ook gebruikt worden als front-end voor Xapian.
Xapian is bruikbaar vanuit Perl, Python, PHP, Java, Tcl, C# en Ruby. Meer applicatietalen zijn nog op komst. De bedoeling van Xapian lijkt heel erg op die van Apache Lucene, alleen is Xapian geschreven in C++ (zoals de rest van Linux) en niet in Java. Daardoor zou het minder systeembronnen nodig moeten hebben dan Lucene en omdat er geen extra vertaalstap nodig is, werkt het in theorie ook veel sneller. Xapian ondersteunt het waarschijnlijkheidsinformatiezoekmodel ('probalistic information retrieval') en biedt een rijke verzameling booleaanse ondervraagoperatoren. Het Xapian project heeft een zusterproject genaamd Omega voor wie op zoek is naar een zoekmotor voor een website. Omega is dus een applicatie ontworpen voor gebruik binnen een website die gebruik maakt van de Xapian-bibliotheek. Wij houden het echter bij de gebruikersdesktop en kijken verderop naar Recoll, dat Xapian gebruikt voor desktopzoekfuncties.
Xapian Server
Xapian gebruikt standaard eigenlijk geen server. De bedoeling was een en ander zo compact mogelijk te houden en gebruik te maken van zo weinig mogelijk systeembronnen. De daemon die normaal aan de serverkant draait, bestaat hier uit een indexeerprogramma. Dat draait niet continu, maar kun je op 'stille' momenten laten draaien met behulp van cron of een andere scheduler. De geïndexeerde informatie wordt in een database weggeschreven. Die database maakt echter geen deel uit van Xapian, want dat is alleen de functiebibliotheek. De zoekapplicatie moet dus zijn eigen database bijhouden. Onder Linux is er geen installatiewerk aangezien de Xapian-bibliotheek al in heel wat Linux'en en Unix'en standaard geïnstalleerd meegeleverd wordt.
Gebruikersinterface
We kozen Recoll als voorbeeld voor een zoekapplicatie die gebruik maakt van Xapian. Recoll is normaal gedoeld als desktop zoek-GUI, maar bestaat zelf wel uit verschillende modules, waaronder een indexeerder die een indexdatabase bijhoudt en de eigenlijke GUI waarmee de gebruiker zijn zoektermen kan opgeven en de resultaten bekijken. Recoll ondersteunt het gebruik van een externe indexdatabase, dus is het niet zo moeilijk om het indexeerprogrammaatje en de indexdatabase op de bestanden- of documentenserver te zetten. Zo kan elke desktop-Recoll gebruik maken van die centrale indexdatabase en dus ook de documenten op de server doorzoeken. Dit is uiteraard een erg eenvoudige opstelling: er is geen voorziening voor autorisaties en kijkrechten. Alles waar Recoll bij kan, kan elke gebruiker ook bekijken.
Recoll heeft een erg eenvoudige gebruikersinterface. Nadat de indexen verzameld zijn, kun je zoekopdrachten in het zoekveld bovenaan intikken. Standaard staat dat ingesteld om een beetje zoals Google te werken, waarbij meerdere termen via 'en' verwerkt worden. Maar met een klein afrolmenuutje kun je een andere query-methode kiezen: een 'of'-verwerking, alleen bestandsnamen zoeken, of gebruik maken van een query-taal. Onder het zoekveld staan aanvinkbare documenttypes: alles, media, berichten, presentaties, spreadsheets, tekst en andere. Recoll en Xapian ondersteunen ook het zoeken in pdf's, Microsoft Office- en odf-documenten. Dat vereist wel een 'helper' voor ieder formaat dat je wilt kunnen doorzoeken. Die helpers zijn open-sourcehulpprogramma's voor Linux waarmee allerlei documentformaten snel omgezet kunnen worden naar platte tekst. Veel van die helpers zitten al standaard in Linux, maar Recoll heeft een menufunctie waarmee je kunt zien welke helpers er ontbreken en die dan zonodig toevoegen.
Recoll houdt een documentgeschiedenis bij, ondersteunt meerdere talen en heeft een paar geavanceerdere hulpmiddelen zoals een term explorer en het sorteren van parameters, of een geavanceerde zoekdialoog. Recoll zit standaard in de softwarebibliotheken van Ubuntu en Debian en waarschijnlijk in nog heel wat andere Linux-distributies.
Prestaties
De eerste stap is altijd het indexeren van onze directoryboom met documenten. Daarbij verraste ons de ongebruikelijk grote werksnelheid van Recoll en Xapian: de hele indexering duurde nog geen vijf minuten! Ook het intikken van een zoekterm leidde erg snel tot resultaten: binnen de seconde.
Productoordeel
De combinatie van Xapian en Recoll blijkt het snelst van allemaal en aangezien de Xapian-bibliotheken in de meeste Linux'en standaard aanwezig zijn, heb je in feite al zeer krachtige zoekfunctionaliteit beschikbaar op bijna alle Linux- en Unix-systemen. Er moet dus alleen nog een applicatie toegevoegd worden zodat een gebruiker ermee kan zoeken. Voor Linux is dat geen probleem met Recoll, maar voor Windows hebben we er niet meteen een gevonden.
Productinfo
Product: Xapian search engine 1.2.5/Recoll 1.15.7 user GUI
Producent & leverancier: Xapian, xapian.org/Recoll, www.lesbonscomptes.com/recoll/
Adviesprijs: gratis
Systeemvereisten: Xapian: bijna alle Linux- en Unix-varianten, Microsoft Windows en IBM OS/2; Recoll: Linux, maar aangezien het open source is, kan probleemloos een Windows-versie gecompileerd worden.
De Serie: Zoekmotoren en -servers
Deel 1: Xapian & Recoll levert verrassend goede zoekmachine op
Deel 2: TiNK Search
Deel 3: Apache Lucene
Deel 4: Xapian en Recoll
Een ‘open source’ ‘zoekmotorbibiliotheek’.
Ernstig! Kom op redactie, maak er dan of een open-broncode zoekmotorbibliotheek of een open source search engine van. Ik denk wel dat in het eerste geval vrijwel alle lezers zijn afgehaakt, maar dat terzijde.
klein schoonheidsfoutje:
Linux is niet in C++ geschreven maar in C
Linus Torvalds licht het waarom daarvan op elegante en subtiele wijze toe 😉
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918