Teveel resultaat wanneer huisnummer beginletter postcode is

Mede gebruikers,

In de BAG-viewer maken we gebruik van de locatieserver. We gebruiken één zoekveld waarin je op alle gegevens kunt zoeken. Bij het zoeken op een adres of postcode + huisnummer levert de locatieserver (wat mij betreft) te veel resultaten als het huisnummer ook de eerste letter van de postcode is.

Voorbeeld ter illustratie:
Bij het zoeken op asserweg 9 Hooghalen geeft de locatieserver alle adressen aan de asserweg in Hooghalen omdat de postcode (9414TB) begint met een 9. De postcode wordt als match gevonden. Als je bijvoorbeeld zoekt op asserweg 7 krijg je (keurig) slechts één resultaat. Omdat er een exacte match (op adres) gevonden wordt, zouden wij graag zien dat de locatieserver alleen het adres met huisnummer 9 zou leveren.

De locatieserver geeft trouwens ook alle adressen aan de asserweg in Hooghalen als je zoekt op (het niet bestaande) adres asserweg 94 (omdat de postcode begint met 94) Het is wat ons betreft verwarrend dat er in dit geval resultaten getoond worden omdat hierdoor niet direct duidelijk is dat het adres niet bestaat.

Het probleem is dat de locatieserver 9 niet alleen herkent als huisnummer, maar ook als deel van een postcode.

Een mogelijke oplossing zou voor ons kunnen zijn dat de locatieserver alleen postcode resultaten levert als de zoekopdracht voldoet aan de kenmerken van een postcode. Ik kan me voorstellen dat er gebruikers zijn die graag resultaten ontvangen per woonpaatswijkcode (de vier cijfers uit de postcode) maar ik verwacht niet dat gebruikers postcode gegevens willen ontvangen bij het zoeken op één cijfer. Oftewel: geef alleen resultaten uit het postcodeveld als de zoekopdracht uit vier cijfers bestaat of uit de combinatie van vier cijfers en twee letters en laat de resultaten tot en met drie cijfers achterwege. Postcodes zijn in die zin makkelijk te herkennen.

Ik ben benieuwd of er andere gebruikers zijn die zich herkennen in het hierboven geschetste probleem, en of hiervoor mogelijke oplossingen zijn gevonden.

1 like

Ja herkenbaar. Ik heb dit eerder aangekaart zie (https://pdokforum.geonovum.nl/t/veel-te-veel-resultaten/294). Daar kwam eigenlijk geen bevredigend antwoord. Een vergelijkbaar probleem heb je op als je zoekt op postcode: levert ook alle huisnummers in het postcode gebied en bij zoeken met een plaatsnaam: alle objecten in die plaats.

Aangezien we alleen op adressen, postcode en plaatsnaam zoeken ondersteunen heb ik de volgende query bedacht dit het iets werkbaarder maakt:
http://geodata.nationaalgeoregister.nl/locatieserver/free?wt=json&q=(gemeentenaam:<invoer>%20and%20type:gemeente)OR(postcode:<invoer>%20and%20type:postcode)OR(suggest:%22<invoer>%22%20and%20type:adres%20and%20(-woonplaatsnaam:<invoer>%20OR%20-postcode:<invoer>))&fl=weergavenaam,geometrie_rd

Zie hier de query (wel zonder fl en met indent param) als je zoekt op asserweg 9: http://geodata.nationaalgeoregister.nl/locatieserver/free?wt=json&q=(gemeentenaam:“asserweg%209”%20and%20type:gemeente)OR(postcode:“asserweg%209”%20and%20type:postcode)OR(suggest:“asserweg%209”%20and%20type:adres%20and%20(-woonplaatsnaam:“asserweg%209”%20OR%20-postcode:“asserweg%209”))&indent=true

Wellicht is dit in de locatieserver op te lossen door uitsluitend het postcode veld in de resultaten op te nemen als het voorafgegaan wordt door , of ,<spatie> of aan het begin van de query is.

Gaat dit probleem nog opgelost worden aan de Locatieserver kant? Dat als je zoekt met cijfers dat de match op huisnummer voorrang krijgt boven postcode zodat die bovenaan de lijst komen?

We hebben het op de backlog voor issues die met Locatieserver 4.0 willen oplossen gezet.

Kleine nuance: wanneer er een exacte match op huisnummer is, dan moet deze altijd het eerste zoekresultaat zijn.

De wens van Pieter en Hilbrand is bewerkelijker: we moeten dan een oplossing implementeren waarbij er geen gebruik meer gemaakt kan worden van autocomplete op de postcode (4 PC of 6 PC). We hebben een speciaal “suggest” veld waar de weergavenaam naar wordt gekopieerd, evenals een aantal varianten (verschillende combinaties van huisnummers, -letters en -toevoegingen en postcode met/zonder spatie). De weergavenaam kunnen we dan niet gebruiken, maar we moeten de velden die voor de weergavenaam worden gebruikt, m.u.v. de postcode, afzonderlijk kopiëren, incl. de huisnummer-combinaties. Hierop kan het edge n-gram filter wordt losgelaten. Dat zorgt ervoor dat autocomplete werkt. Vervolgens moet de inhoud van dit veld naar het “definitieve” suggest-veld worden gekopieerd, waar de 4PC en 6PC-strings in hun geheel naar toe worden gekopieerd.

In mijn optiek is dit een breaking change met hoe het nu werkt. Voor jullie en anderen is dit wellicht de oplossing voor functionaliteit die nu niet goed werkt. To be continued…

M.i. lost dit enerzijds een probleem op maar introduceer je inderdaad een change dat dat gebruikers niet meer gebruik kunnen maken van autocomplete op de postcode maar ja is dat erg… Ik ben benieuwd naar de reacties.

Ik ben er heel erg voor om de match op postcode alleen te doen als er 4 cijfers zijn of misschien beter nog 4 cijfers en 2 letters. Autocomplete op postcode vind ik totaal overbodig. Ik zou dit heel graag opgelost zien in Locatieserver 4.

Als ik zoek op Kerkstraat 59 dan krijg ik (zonder sort parameter) met de testversie 4 inderdaad nu de exacte match op huisnummer als eerste resultaat (in tegenstelling tot versie 3). Echter ik MOET wel de sort=sortering toepassen want anders gaan gebruikers adressen met huisletters missen in het resultaat. En met sort-parameter staat Kerkstraat 59 niet in het resultaat (althans niet bij de eerste 20).

Ik zit nu klem.

Ofwel in de standaard sortering (zonder sort) moeten de resultaten goed gesorteerd worden als er adressen met huisletters zijn. Of de match op postcode moet pas plaatsvinden als er 4 cijfers zijn getypt zodat ze niet het resultaat terecht komen.

Een optie binnen de huidige API zou nog kunnen zijn om de API twee keer te bevragen (filteren op postcode) maar is misschien wat omslachtig. Daar zou het matchen op 4 cijfers geen gek idee zijn dus dat is iets wat zouden kunnen onderzoeken voor de toekomst. We hadden ook al mail contact dus we kunnen het via die weg ook nog verder over hebben.

Ik weet niet precies wat je bedoelt met de oplossing “twee keer bevragen (filteren op postcode)”.
Ik ben nog even verder bezig geweest met een andere sortering. In plaats van “sort=sortering asc, score desc” gebruik ik “sort=score desc, sortering asc”. Dan zie ik in het resultaat wel eerst de match op het exacte huisnummer. Echter dit heeft een neveneffect. Als ik alleen zoek op een straatnaam die adressen heeft met een huisletter dan zie ik in de eerste 20 resultaten naast de straatnaam zelf alleen adressen met een huisletter. De score van deze resultaten blijkt hoger te zijn dan de score van adressen zonder huisletter. Dat is merkwaardig omdat ik alleen op straatnaam zoek en daarom verwacht ik dat de score gelijk is. In dat geval zou namelijk de “sort=score desc, sortering asc” wel goed werken.

Concreet voorbeeld:
https://geodata.nationaalgeoregister.nl/locatieserver/v3/suggest?wt=xml&sort=score desc, sortering asc&q=keizer+karelweg+and+%28gemeentenaam%3A%22Amstelveen%22%29&rows=21

Levert als resultaat:

  • Keizer Karelweg, Amstelveen
  • Keizer Karelweg 480B, Amstelveen
  • Keizer Karelweg 2A, 1185HT Amstelveen (score 23.351818)
  • Keizer Karelweg 2B, 1185HT Amstelveen (score 23.351818)
  • Keizer Karelweg 2C, 1185HT Amstelveen (score 23.351818)
  • etc.

Terwijl er ook een adres is “Keizer Karelweg 2, 1185HT Amstelveen”
maar deze heeft een lagere score: 23.242397 en komt door mijn sortering dus niet bij de eerste 20 resultaten.

Verder heb ik de oplossing van Hilbrand geprobeerd. Die werkt in principe maar heeft helaas een neveneffect dat je niet kunt zoeken op postcode + huisnummer. Bv “1185HT 2” levert dan niets op. Ik denk dat ook zijn gebruikers dat niet fijn zullen vinden.

Het probleem dat huisletters een hogere score krijgen treedt alleen op bij straatnamen met een spatie erin. Als je zoekt op “Groenelaan, Amstelveen” dan krijgen adressen met en zonder huisletter dezelfde score.
Blijkbaar krijgen adressen met een huisletter een boost als je zoekt op een straatnaam met daarin een spatie.