Suggest geeft te veel resultaten bij exacte match op postcode/huisnummer

Als ik zoek op ‘2991 RK 1’ krijg ik van de suggest server terug:

Kruidentuin 1, 2991 RK Barendrecht
Kruidentuin 10, 2991 RK Barendrecht
Kruidentuin 10a, 2991 RK Barendrecht

Deze laatste twee zou ik niet terug willen krijgen aangezien ik een exacte match heb ingevuld van een bestaand adres. Dit maakt voor ons (DSO Gebruikerstoepassingen) het lastig om te bepalen of de gebruiker een correcte/bestaande postcode huisnummer combinatie heeft ingevuld.

Op GitHub lees ik:

Tevens worden twee andere adressen in dezelfde straat in Kampen teruggegeven met huisnummer ‘11-01’ en ‘11-02’. Dit heeft er mee te maken dat bij het indexeren huisnummers, -letters en -toevoegingen op verschillende manieren worden gecombineerd, waardoor deze twee adressen ook als match worden gezien. Wel is hiervan de score lager. In een toekomstige versie zal dit worden verwijderd.

Zie: Home · PDOK/locatieserver Wiki · GitHub

Maar dit beschrijft weer een net andere situatie lijkt het.

Kan ik met de huidige service iets anders doen om alleen Kruidentuin 1 en dus niet 10 en 10a terug te krijgen?

Even als buitenstaander, maar dat is toch juist wat je wilt bij een ‘suggest’-service: wanneer je aan het tikken bent en bij ‘2991 RK 1’ bent wil je die 3 suggesties krijgen?
OF je kunt de ‘free’-service gebruiken?
Als alternatief zou je nog kunnen tikken ‘1 2991RK’ dan weet de service dat je ‘1’ bedoelt en niet ‘iets wat met 1 begint’?

Dank voor de tip. Ik snap wat je bedoelt, ik dacht alleen bij de ‘free’ service hetzelfde resultaat te krijgen, maar dat blijkt niet het geval te zijn, mits ik met ‘and’ zoek ipv ‘or’. Daar nog even wat meer induiken, vond de omschrijving niet zo helder:

De vrije geocodeerservice wordt ontsloten via het free-endpoint. Deze wordt in dit document niet verder behandeld.

Met de free service krijg je standaard meer resultaten terug dan met suggest. Dit omdat de standaard boolean operator (die wordt gebruikt of alles moet matchen of slechts 1 resultaat) “or” is, dus als er 1 match is, wordt het resultaat teruggeven. Het 2e resultaat is dan de woonplaats Renkum, met woonplaatscode 2991.

Je kunt de free service wel gebruiken om op specifieke velden te gebruiken en ook “and” meegeven: http://geodata.nationaalgeoregister.nl/locatieserver/v3/free?q=postcode:“2991%20RK”%20and%20huisnummer:1

Let op dat je de postcodeletters en -cijfers tussen dubbele quotes zet, zodat het als één zoekstring wordt gezien. Dit is niet nodig bij het huisnummer, of wanneer je de spatie in de postcode weglaat.

Beter is: http://geodata.nationaalgeoregister.nl/locatieserver/v3/free?q=postcode:"2991%20RK"%20huisnummer:1&q.op=AND
(Let op: de query operator moet in hoofdletters worden gegeven)

1 like

Dank voor het meedenken, ik ga eens aan de slag met de filters, quotes etc. Hier moet volgens mij wel een werkwijze tussenzitten die gaat werken.

Mogelijkheden genoeg. Het is een kwestie van trial en error om de combinatie te kiezen die voor jouw use case het beste resultaat geeft. Locatieserver is een generieke dienst, dus wij streven er naar om een oplossing waarbij een zo groot mogelijke groep gebruikers mee tevreden is.

Hier is veel informatie over query parameters in Solr te vinden: Common Query Parameters | Apache Solr Reference Guide 6.6
We zijn momenteel wel bezig met een migratie naar Solr 7, maar voor het overgrote deel zal dit blijven werken.