Volgorde van zoekresultaten

Pandosearch bepaalt de volgorde van zoekresultaten door voor elk document een score te berekenen. Dit doen we op basis van hoe vaak een zoekwoord voorkomt en op welke plek in het document. Daarnaast speelt ook mee hoe uniek een zoekwoord is als je naar alle beschikbare documenten kijkt. Optioneel zijn nog andere factoren van belang, zoals hoe oud een document is. Het document met de hoogste score komt bovenaan te staan.

De rest van dit artikel legt het bovenstaande in meer detail uit.

Woord vooraf: elke Pandosearch implementatie heeft een eigen berekening die op maat kan worden afgesteld waar nodig. Dit artikel behandelt de basisregels die voor vrijwel elke Pandosearch implementatie hetzelfde zijn.

Score voor relevantie

Voor elke binnenkomende zoekopdracht berekent Pandosearch voor alle beschikbare documenten een score voor relevantie. Een document is meestal een webpagina, maar kan ook een PDF bestand zijn of andere informatie. Het document met de hoogste score komt bovenaan in de zoekresultaten.

Deze score komt in de basis tot stand met behulp van de antwoorden op de volgende twee vragen:

  1. In welke velden komt het zoekwoord voor?
  2. Voor alle velden waarin het zoekwoord voorkomt: hoe zwaar weegt dit veld mee?

Daarnaast zijn er nog enkele andere factoren die meespelen. De rest van dit artikel gaat hier dieper op in.

Doorzoekbare velden

Voor alle gevonden documenten vertaalt Pandosearch de ruwe informatie (de HTML zoals die online staat) naar specifieke velden om te kunnen doorzoeken.

De term “veld” is erg generiek. Dat komt omdat dit allerlei informatie kan zijn en per implementatie en type document sterk kan verschillen. In dit artikel gaan we uit van een webpagina. Hierbij moet je in de basis denken aan velden als:

  • title: de titel die je in je bovenin je browservenster ziet.
  • body: de volledige voor bezoekers zichtbare inhoud van de webpagina.
  • meta tags: stukjes “onzichtbare” informatie in de broncode die Pandosearch kan uitlezen. In dit artikel vind je meer informatie over wat dit zijn en wat je eraan hebt.

Daarnaast kan een document nog veel meer velden bevatten die we voor nu even buiten beschouwing laten. Gebruik de “Diagnostisch” functie van het Pando Panel als je voor jouw eigen implementatie wilt zien welke velden Pandosearch kent en welke informatie erin staat.

Terug naar de berekening: stel dat iemand zoekt op “klantenservice”, dan kijkt Pandosearch in alle doorzoekbare velden of het woord “klantenservice” erin voorkomt. Zo ja, dan telt het veld mee in het berekenen van de totaalscore van het document. Zo nee, dan niet.

Weging van velden

Naast de vraag óf een zoekwoord in een veld voorkomt, is het ook van belang in wélk veld een zoekwoord voorkomt. In het voorbeeld voor zoeken op “klantenservice”, kan het zijn dat meerdere pagina’s ergens het woord “klantenservice” in de lopende tekst bevatten. Maar de kans is groot dat er maar één pagina is die als titel “Klantenservice” heeft.

Algemeen gezegd is het vaak zo dat een document relevanter is als ook de titel een zoekwoord bevat dan wanneer alleen de gewone tekst een zoekwoord bevat. De titel is immers vaak een korte samenvatting van de belangrijkste inhoud van een document.

Dit verschil in relevantie brengen we tot uitdrukking in een weging van elk veld. Standaard krijgt een veld een weging van 1. Het veld dat de titel bevat geven we dan bijvoorbeeld een weging van 5. Dit betekent dat de aanwezigheid van een zoekterm in de titel 5 x zo belangrijk is als in velden zonder specifieke weging.

Een extreem voorbeeld van hoe we weging toepassen is de keymatch functionaliteit. Een zoekwoord dat als keymatch voorkomt krijgt een zeer hoge wegingsfactor (bijvoorbeeld iets als 99), waardoor in de praktijk het document vrijwel altijd bovenaan komt in de zoekresultaten.

Als een zoekterm in meerdere velden voorkomt, of meerdere keren in één veld, dan tellen de afzonderlijke scores op tot een hogere totaalscore. Het achterliggende idee hierbij is dat een document waarin een zoekwoord heel vaak voorkomt relevanter is dan een document waarin het maar één of twee keer wordt genoemd.

Bij nieuwe implementaties beginnen we vaak met een basisset wegingsfactoren waarvan ervaring heeft geleerd dat dit leidt tot goede zoekresultaten voor bezoekers. Indien nodig stellen we deze bij als blijkt dat bepaalde velden te zwaar wegen of juist niet zwaar genoeg. Daarnaast kunnen we ook nieuwe velden toevoegen of velden helemaal weglaten uit de berekening als ze in de praktijk geen meerwaarde blijken te hebben.

Andere factoren

Het bovenstaande is in de basis hoe het mechanisme werkt. Als we nog iets dieper gaan zijn er nog meer factoren die meespelen. Deze zijn soms erg technisch en ook niet voor elke implementatie relevant. Het gaat op deze plek daarom te ver om alles te behandelen. Een paar voorbeelden om een indruk te geven:

  • Hoe korter de tekst in de doorzochte velden, hoe hoger een document in de resultaten komt. Het idee hierachter is dat als een zoekwoord één keer in een korte tekst voorkomt, dit waarschijnlijk relevanter is dan wanneer het twee keer voorkomt in een heel lang stuk tekst waar ook heel veel andere woorden in staan.
  • Als iemand op meerdere woorden tegelijk zoekt, komen documenten waar alle zoekwoorden in voorkomen hoger dan documenten waar een deel van de zoekwoorden in voorkomt. Dit heeft voorrang op hoe vaak zoekwoorden voorkomt. Het idee hierachter is dat hoe specifieker de inhoud van een document klopt met alle ingevuld zoekwoorden, hoe groter de kans is dat het precies is wat je zoekt.
  • Als een woord maar heel weinig voorkomt in alle documenten samen, dan is de score hoger als het gevonden wordt dan voor een woord dat heel vaak voorkomt. Dit heet de inverse document frequency en is een manier om te voorkomen dat lidwoorden (de, het, een) in zoekopdrachten een te grote rol spelen als iemand op een hele zin zoekt. Het idee is dat hoe minder een woord voorkomt, hoe groter de kans is dat het document waar het in staat is wat iemand bedoelt te vinden.
  • Bij zaken als blogposts of nieuwsartikelen kunnen we instellen dat oudere artikelen een lagere score krijgen. Vaak geldt namelijk dat het meest recente nieuws het vaakst relevant is voor bezoekers en dat dit dus bovenaan de zoekresultaten moet komen als er meerdere documenten zijn waarin een zoekwoord even vaak voorkomt.

Voor nog meer technische informatie, zie bijvoorbeeld deze artikelen (in het Engels):

Tot slot

Mocht je na het lezen van dit artikel vragen hebben over de zoekvolgorde binnen jouw implementatie, neem even contact op via één van de beschikbare supportkanalen en we vertellen je graag meer.