Autocomplete Zoekplatform passend maken met lokale bibliotheekcollectie

Bij het intikken van een zoekopdracht zijn gebruikers erg geholpen wanneer automatisch mogelijk relevante zoektermen worden gesuggereerd. Het NBC+ zoekplatform biedt deze zogenaamde ‘autocomplete’ functie aan, zodat bibliotheken deze kunnen opnemen in hun website. De NBC+ autocomplete functie biedt bij de de gesuggereerde zoektermen bovendien het type (bijv. een boek of track) van het zoekresultaat dat ermee overeenkomt (zie afbeelding).

Screen Shot 2016-01-14 at 09.10.37

De suggesties waren tot nu toe gebaseerd op alle titels die bekend zijn in de landelijke catalogus. Voor specifieke toepassingen is dat echter onwenselijk, zoals op de website die gericht is op het uitlenen van e-books. Voor een gebruiker zou het hier verwarrend zijn om suggesties te krijgen van titels die niet als e-book beschikbaar zijn. Op dezelfde manier geldt dat een bibliotheek natuurlijk geen suggesties wil geven van materiaal uit een specifieke lokale collectie van een andere bibliotheek.

Op dit moment ontwikkelen we de code die het mogelijk maakt de suggesties te beperken tot precies het deel van de nationale collectie dat een lokale bibliotheek daadwerkelijk aanbiedt op haar website. Zo vinden gebruikers nog makkelijker wat ze zoeken.

 

Autocomplete met Solr

Autocomplete is een functie die al langere tijd beschikbaar is in de systemen die met Meresco gebouwd worden, maar bij Seecr en haar opdrachtgever Kennisnet bestond de behoefte aan een duidelijk overzicht van de verschillende methodes voor een autocomplete functie.

Meresco levert die functies via Solr. Op de Meresco blog analyseert Hendrik vier methodes van autocomplete die door Solr 4.0 worden aangeboden.

Autocomplete met Solr (Dutch)

Autocomplete is een functie die al langere tijd beschikbaar is in de systemen die met Meresco gebouwd worden, maar bij Seecr en haar opdrachtgever Kennisnet bestond de behoefte aan een duidelijk overzicht van de verschillende methodes voor een autocomplete functie.

Meresco levert die functies via Solr. Hieronder analyseren we vier methodes van autocomplete die door Solr 4.0 worden aangeboden op basis van de volgende criteria.

De methode:

  1. geeft aanvulling op velden met één waarde (bijvoorbeeld: datum=01052013) of met meerdere waarden (bijvoorbeeld: tags=leuk, spannend).
  2. kan achteraan , maar ook vooraan of middenin aanvullen: “auto”, “mobiel” en “autobiel” leveren “automobiel” op.
  3. geeft aanvullingen binnen een zoekresultaat (bijvoorbeeld: aanvulling binnen het resultaat van de vorige zoekvraag) of op de gehele index.
  4. geeft (exacte) aantallen voor de te verwachten resultaten.
  5. kan snel aanvullen uit een lijst met zeer veel verschillende waarden (>100.000).
  6. werkt op een standaard index, of op een apart te bouwen index.

De vier methodes voor autocomplete in Solr (en Meresco) werken op basis van:

  1. De Facet-functie
  2. Alle Termen in de Index
  3. De Suggester Component
  4. Een N-Grammen Index

De Facet-functie
Met behulp van de standaard facet-functie kunnen alleen achteraan aanvullingen gegenereerd worden. Dit werkt erg efficiënt, ook binnen zoekresultaten. Het mooie er van is dat bij elke term het te verwachten aantal resultaten getoond kan worden. Met erg veel termen wordt het echter wel trager.

Voordelen:
–       Geeft aanvullingen in velden met meerdere waarden.
–       Geeft aanvullingen binnen een zoekresultaat.
–       Geeft exacte aantallen voor de te verwachten resultaten.
–       Te gebruiken met een standaard index.

Nadelen:
–       Kan alleen achteraan aanvullen.
–       Wordt minder snel bij zeer veel verschillende waarden.

Alle Termen in de Index
Deze methode geeft aanvullingen op basis van alle geïndexeerde waarden in een index. Het ondersteunt aanvullen achteraan, vooraan en middenin. Maar alleen achteraan werkt snel, ook bij zeer veel waarden in de index.

Voordelen:
–       Geeft aanvullingen in velden met meerdere waarden.
–       Kan achteraan, vooraan en middenin aanvullen.
–       Te gebruiken met een standaard index.
–       Werkt efficiënt met zeer veel verschillende waarden.

Nadelen:
–       Vooraan en middenin aanvullen werkt niet efficiënt.
–       Alleen een benadering van het aantal te verwachten resultaten.
–       Kan geen aanvullingen geven binnen een zoekresultaat.

De Suggester Component
Via de Suggester component kan een aanvulling gedaan worden door het aan te vullen woord te zien als woord waarvoor spellingscontrole gedaan moet worden. Dit werkt efficiënt voor aanvulling achteraan, vooraan en middenin door middel van een speciale index. Het mooie van deze oplossing is dat er verschillende algoritmen kunnen worden gekozen om de aanvulling te produceren.

Voordelen:
–       Geeft aanvullingen in velden met meerdere waarden.
–       Kan achteraan, vooraan en middenin aanvullen.
–       Werkt efficiënt met zeer veel verschillende waarden.

Nadelen:
–       Kan geen aanvullingen geven binnen een zoekresultaat.
–       Geen informatie over het aantal te verwachten resultaten.
–       Er moet een speciale index (tree) voor onderhouden worden.

Een N-Grammen Index
Deze oplossing wijkt sterk af van de andere. De aanvullingen gaan op basis van een query op een speciale index van delen van woorden. Het woord “snel” wordt hierin geïndexeerd als “sn”, “ne” en “el”. Omdat dit een normale zoekopdracht is, geeft dit geen aanvullingen terug, maar moet dit gecombineerd worden met de facet-functie of het ophalen van opgeslagen waarden. Het mooie aan deze oplossing is dat het gemakkelijk uitgebreid kan worden met speciale spellingcheckers of fonetische suggesties.

Voordelen:
– Kan achteraan, vooraan en middenin aanvullen.
– Geeft exacte aantallen voor de te verwachten resultaten in combinatie met de facet-functie.
– Werkt binnen een zoekresultaat.
– Werkt efficiënt met zeer veel verschillende termen.

Nadelen:
– Niet geschikt voor velden met meerdere waarden.
– Er moet een speciale n-gram index voor worden opgebouwd.

Samenvatting
In onderstaande tabel worden de voor en nadelen naast elkaar gezet. Daaruit is duidelijk op te maken dat de verschillende methodes heel verschillend scoren op onze criteria.

  Facet-functie Termen Suggester N-Grammen
Meerdere waarden per veld

+

+

+

Achteraan

Vooraan

Middenin

+

+

+/-

+/-

+

+

+

+

+

+

Binnen een zoekresultaat

+

+

Exacte aantallen

+

+

Veel verschillende waarden

+

+

+

Index

standaard

standaard

tree

n-gram

Conclusie
Uit de resultaten komt naar voren dat voor een bepaalde toepassing een specifieke methode beter werkt dan andere. In twee gevallen is er ook een speciale index nodig om het goed, en efficiënt, te laten werken. Het kiezen van de juiste autocomplete methode is daarom dus een zaak van grondige analyse van de wensen.

Discover – TU Delft

Discover is een mooi resultaat van een goede samenwerking met deskundige ontwikkelaars.

Discover is de zoekmachine achter de inhoud van de bibliotheek van TU Delft. Het bibliotheekmateriaal was verspreid over verschillende databases. We hebben een systeem ontwikkeld die collecties kan integreren. Een portal met een aantal innovatieve features rondom het zoeken en leggen van koppelingen naar de achterliggende datasystemen. Het project Discover stond bol van de uitdagingen. Veel features waren volledig nieuw.

Did you mean
Via een ‘Did you mean’-functie in je zoekmachine kun je de gebruiker een zoeksuggestie doen: “Bedoelde je soms dit…”. Wij hadden dat nog niet eerder gemaakt en dergelijke functies waren destijds nog niet gebruikelijk. Het werkt echter totaal anders dan Google. Google doet suggesties door wat anderen hebben ingetypt, dus wat de meerderheid vindt is goed. Onze ‘Did you mean’-functie baseert zich echter op gegevens die zich in databases van de TU bevinden. Die data gebruiken we om goede suggesties te doen. Dat betekende zorgvuldig algoritmes tunen, inhoudelijk kijken wat er in de collecties zat en wat de verwachtingen waren. Je wilt uiteraard suggesties doen die echt kloppen.

Autocomplete
Voor de autocomplete feature heb je een specifieke datastructuur nodig, TRIE, maar die structuren zijn duur en ze kosten veel geheugen. De TRIE datastructuur is al zo oud als computers zelf zijn. Ondanks die ouderdom, zijn er nog steeds vakmensen mee aan het werk om het systeem te verbeteren. Na 30 jaar gebruik, kwam er alsnog een doorbraak, een nieuwe TRIE die minder geheugen gebruikt, het is heel snel voor alle gekke woorden die je er instopt. Er was nog geen robuuste implementatie, dus dat hebben we zelf gedaan.

Facetten, maar dan anders
We hebben facetten gekoppeld aan andere algoritmes dan gebruikelijk. Termen worden meestal geteld, maar de meest voorkomende term levert soms maar weinig inperking op de hoeveelheid zoekresultaten. In samenwerking met het NWO CATCH Project, hebben we discriminerende facetten ontwikkeld die gebruik maken van algoritmes zoals information gain. Je geeft een machine een aantal documenten en het systeem bepaalt zelf wat daarin de meest onderscheidende zoektermen zijn. Discover doet dit on-the-fly en presenteert dit als facet.

Gebruikersonderzoek
Karin, de projectleidster, had een team van vakmensen samengesteld. Twee dames deden een gebruikersonderzoek en Karin vertaalde dat naar concrete features voor Discover. Dat was geweldig werken voor ons. Je voelt je zeer nuttig omdat je echt bezig bent voor de eindgebruiker. Je stelt mensen voorop, in plaats van een systeem.

Gedurfde stap
Er was geen alternatief voor Discover en ook was er geen uitgebreid plan. Ze leken te denken: we hebben een budget en we gaan het doen. Een managementlaag wil soms zekerheden en dikwijls denkt men dat te bereiken door veel papierwerk. In de praktijk zie je dat mensen op een lager niveau in de organisatie vervolgens bergen papier moeten produceren. Het hele proces wordt groter, duurder en langzamer. Bij Discover was het plan in hoofdlijnen bekend. Ze wisten goed wat ze wilden, maar hebben de verleiding weerstaan om dat tot op detailniveau uit te werken. Het projectteam stond open voor suggesties. Op die manier was er veel meer ruimte om samen creatief te zijn en tot de beste oplossing te komen.

Looptijd
Vanaf mei 2008