]> git.openstreetmap.org Git - nominatim.git/log
nominatim.git
13 hours agoprepare release 5.3.3-post2 master
Sarah Hoffmann [Tue, 20 Oct 2026 09:07:37 +0000 (11:07 +0200)]
prepare release 5.3.3-post2

14 hours agoMerge remote-tracking branch 'upstream/master'
Sarah Hoffmann [Tue, 20 Oct 2026 08:27:01 +0000 (10:27 +0200)]
Merge remote-tracking branch 'upstream/master'

14 hours agoAdd support for addr:substreet and addr:parentstreet (#4226)
Sarah Hoffmann [Tue, 20 Oct 2026 08:18:35 +0000 (10:18 +0200)]
Add support for addr:substreet and addr:parentstreet (#4226)

This adds support for the [special addressing schema in the
UK](https://wiki.openstreetmap.org/wiki/Addresses_in_the_United_Kingdom)
which may consist of two streets or a place and a street.

The implementation follows what is described in the wiki with support
for `addr:street`+ `addr:parentstreet` and `addr:substreet` +
`addr:parentstreet`. Also possible are combinations of `addr:place` +
`addr:parentstreet` and `addr:housename` + `addr:street` (although here
`addr:unit` support is missing for completeness).

Not supported is the combination of `addr:substreet` + `addr:street`
which is in relatively wide usage. It ends up interpreting the
`addr:substreet` as a suburb. The result is that the combination can
still be found but will be displayed wrongly.

Internally, this is solved as follows:

* addr:substreet is aliased to addr:place in the osm2pgsql import
configuration
* address ranks for results are slightly changed:
   *  addr:place parents are assigned rank 28 (was 18-25 before)
   *  addr:street parents are always assigned 27 (was 26-27 before)
   * addr:parentstreet is inserted at rank 26, when it exists

Standard output formats should be largely uneffected except roads
showing up at rank 27 instead of 26. However, if you have implemented
custom output formatters, you might want to review your implementation.

Closes #4200.

25 hours agoadd support for addr:substreet and addr:parentstreet
Sarah Hoffmann [Tue, 22 Sep 2026 11:59:19 +0000 (13:59 +0200)]
add support for addr:substreet and addr:parentstreet

addr:substreet is aliased to addr:place and output ranking slightly
changed: addr:place is 28, addr:street always 27, while addr:parentstreet
is inserted at 26. This might or might not break some custom
formatter.

28 hours agoUpdate Update.md (#4222)
Sarah Hoffmann [Mon, 19 Oct 2026 18:26:25 +0000 (20:26 +0200)]
Update Update.md (#4222)

Fix typo in `StandardOutput` in `nominatim-updates.service`

## Summary
fix typo

## AI usage
none

2 days agofix joining of words in structured postcode phrases (#4224)
Sarah Hoffmann [Sun, 18 Oct 2026 09:12:15 +0000 (11:12 +0200)]
fix joining of words in structured postcode phrases (#4224)

## Summary
Fixes #4223.

Adds the missing parentheses in the `PHRASE_POSTCODE` join in
`PostcodeParser.parse()`, so words after a space or dash are kept. Also
adds a parser test for a postcode phrase with a space, which fails on
master and passes with the fix.

## AI usage
Not used

4 days agofix joining of words in structured postcode phrases
justpriyanshu [Fri, 16 Oct 2026 04:48:44 +0000 (10:18 +0530)]
fix joining of words in structured postcode phrases

5 days agoUpdate Update.md
knowname [Thu, 15 Oct 2026 09:49:34 +0000 (11:49 +0200)]
Update Update.md

Fix typo in StandardOutput in nominatim-updates.service

6 days agoprepare release 5.3.3-post1
Sarah Hoffmann [Wed, 14 Oct 2026 21:09:18 +0000 (23:09 +0200)]
prepare release 5.3.3-post1

6 days agoprepare release 5.3.2.post12
Sarah Hoffmann [Wed, 14 Oct 2026 21:06:01 +0000 (23:06 +0200)]
prepare release 5.3.2.post12

6 days agoMerge remote-tracking branch 'upstream/master'
Sarah Hoffmann [Wed, 14 Oct 2026 10:26:06 +0000 (12:26 +0200)]
Merge remote-tracking branch 'upstream/master'

6 days agoFix reported parent street for TIGER results in reverse search (#4221)
Sarah Hoffmann [Wed, 14 Oct 2026 06:59:23 +0000 (08:59 +0200)]
Fix reported parent street for TIGER results in reverse search (#4221)

This is an alternative fix for #4208 which avoids introducing additional
variables. BDD and unit tests both adapted to trigger the condition.

Closes #4208.

7 days agoTighten down AI usage policy (#4220)
Sarah Hoffmann [Tue, 13 Oct 2026 17:28:48 +0000 (19:28 +0200)]
Tighten down AI usage policy (#4220)

As announced in #4207, I'm going to take a break from reviewing
AI-generated PRs. This is not a judgement on the overall quality of such
contributions. A good part of them is actually quite usable. The problem
is that it takes a huge amount of time to find out if it is a good or
bad PR. They all look the same on the surface. I'm happy to keep working
with AI-generated content as part of contracting work and when submitted
from long-time contributors, but I'm out of spare time to do this stuff
for drive-by contributions.

The PR also removes the requirement to show a prove of testing. That's
just become useless when AI can easily make up a text section that looks
like a proof.

7 days agofix reported parent street for TIGER results in reverse search
Sarah Hoffmann [Tue, 13 Oct 2026 15:11:58 +0000 (17:11 +0200)]
fix reported parent street for TIGER results in reverse search

7 days agoadd right to refuse PRs on AI-generation grounds
Sarah Hoffmann [Tue, 13 Oct 2026 09:07:04 +0000 (11:07 +0200)]
add right to refuse PRs on AI-generation grounds

7 days agoadd categories for all fallback tags, drop artificial place/house category (#4203)
Sarah Hoffmann [Tue, 13 Oct 2026 07:53:10 +0000 (09:53 +0200)]
add categories for all fallback tags, drop artificial place/house category (#4203)

Fixes #4182.

## Summary

fallback tags such as building and landuse now always get a category,
and all of them are retained if there are more than one. before, only
one (whichever `pairs()` returned last) survived, and only if the object
had a name or address. class/type selection is the same as before.
address only objects still have class/type `place`/`house` but no longer
have `osm.place.house` as a category. `categories` is NULL for those
rows - an empty array would make `is_rankable_place()` drop them. the
backfill in `placex_update()` skips place/house so it doesn't return on
re-index.
adjusted the fallback scenarios in `osm2pgsql/import/tags.feature` and
the two address-only node scenarios in `osm2pgsql/update/tags.feature`
to match.
ran lint, the unit tests and the bdd suites locally, all passed (with
flying colors).
on a full import of the test pbf, all 81 place/house rows in placex now
have NULL categories and none carry osm.place.house.
CI is red because of the sqlalchemy 2.1 thing that #4202 mentioned.

## AI usage
Used Ai for the testing purposes and for extending the existing tests
for this case.

7 days agoCLI reverse/lookup/details return entrances (#4209)
Sarah Hoffmann [Tue, 13 Oct 2026 07:44:44 +0000 (09:44 +0200)]
CLI reverse/lookup/details return entrances (#4209)

## Summary
While debugging https://github.com/osm-search/Nominatim/issues/4205 with
a local database (added the gate as entrance locally) I discovered
"nominatim lookup" with "--entrances" didn't print the entrance data.

For the examples I'm using [an
entrance](https://www.openstreetmap.org/node/3144704341) of [a swimming
center](https://www.openstreetmap.org/way/309147947).

`nominatim search --query "Piscinas do Sport Lisboa e Benfica" --limit 1
--entrances`
- before: `{"name": "Piscinas do Sport Lisboa e Benfica", "entrances":
[{"osm_id": 3144704341, "type": "yes"}] }`
- after: `{"name": "Piscinas do Sport Lisboa e Benfica", "entrances":
[{"osm_id": 3144704341, "type": "yes"}] }`

`nominatim reverse --lat 38.751207 --lon -9.182630 --entrances`
- before: `{"name": "Piscinas do Sport Lisboa e Benfica", "entrances":
null}`
- after: `{"name": "Piscinas do Sport Lisboa e Benfica", "entrances":
[{"osm_id": 3144704341, "type": "yes"}] }`

`nominatim lookup --id W309147947 --entrances`
- before: `{"name": "Piscinas do Sport Lisboa e Benfica", "entrances":
null}`
- after: `{"name": "Piscinas do Sport Lisboa e Benfica", "entrances":
[{"osm_id": 3144704341, "type": "yes"}] }`

`nominatim details --way 309147947 --entrances`
- before: `{"name": "Piscinas do Sport Lisboa e Benfica"}` //
"entrances" key not in response
- after:`{"name": "Piscinas do Sport Lisboa e Benfica", "entrances":
[{"osm_id": 3144704341, "type": "yes"}]}`

## AI usage
Used for both code and test. Tests iterated several times trying to make
it more readable. All commands in this PR tested manually on two
servers.

7 days agoEscape error message text (#4210)
Sarah Hoffmann [Tue, 13 Oct 2026 07:28:32 +0000 (09:28 +0200)]
Escape error message text (#4210)

## Summary
I got a HTTP 500 error with
https://nominatim.openstreetmap.org/search?q=berlin&format=xml&include=%3C1
but it turns out it was my app. The Nominatim API returns HTTP 400 with
broken XML which couldn't be parsed.

```
XML Parsing Error: not well-formed
Line Number 4, Column 50
```

Best to escape all error message text.

## AI usage
I did the XML format handling, documentation, manual tests, PR. LLM
added JSON and extended the test.

7 days agoonly collect fallback tags for named objects
justpriyanshu [Tue, 13 Oct 2026 01:55:00 +0000 (07:25 +0530)]
only collect fallback tags for named objects

7 days agoadd categories for all fallback tags, drop artificial place/house category fix for...
justpriyanshu [Mon, 28 Sep 2026 12:59:24 +0000 (12:59 +0000)]
add categories for all fallback tags, drop artificial place/house category fix for #4182

8 days agoCLI: make --entrances work for all reverse,lookup,details
marc tobias [Wed, 30 Sep 2026 13:24:52 +0000 (15:24 +0200)]
CLI: make --entrances work for all reverse,lookup,details

8 days agoescape error message text
marc tobias [Tue, 29 Sep 2026 11:16:19 +0000 (13:16 +0200)]
escape error message text

8 days agoDocumentation: point to helper script cutting down TIGER data (#4212)
Sarah Hoffmann [Mon, 12 Oct 2026 08:00:36 +0000 (10:00 +0200)]
Documentation: point to helper script cutting down TIGER data (#4212)

## Summary
Nominatim TIGER import processes every input row and looks for nearby
streets even if the region doesn't have OSM data imported. Importing a
small region of OSM data, then TIGER data can take hours. Instead of
adding more logic/parameters/thing-that-need tests I created a helper
script to cut down the CSV files.

## AI usage
Script mostly LLM generated. Years ago I wrote two versions of the TIGER
data extract in the repo so I understand the input and output data.
Tested with extracts.

8 days agoVarious updates to CI and adaptions for newer dependency versions (#4218)
Sarah Hoffmann [Mon, 12 Oct 2026 07:59:00 +0000 (09:59 +0200)]
Various updates to CI and adaptions for newer dependency versions (#4218)

This finally fixes all the latest CI fails:

* type adaptions for SQLAlchemy 2.1 (including reallowing this version)
* type adaptions for urllib
* replacement of SQLAlchemy's `await_` (see #4202)
* some general cleanup of the CI scripts including moving linting into
its own task so it will fail quickly when it fails

Supersedes #4202.

9 days agoreplace removed SQLAlchemy await_ call
Sarah Hoffmann [Sun, 11 Oct 2026 21:29:23 +0000 (23:29 +0200)]
replace removed SQLAlchemy await_ call

9 days agoreintroduce python-bdd installed from pip
Sarah Hoffmann [Sun, 11 Oct 2026 21:05:57 +0000 (23:05 +0200)]
reintroduce python-bdd installed from pip

Ubunut's version is too old.

9 days agoremove SQLAlchemy 2.1 restriction
Sarah Hoffmann [Sun, 11 Oct 2026 20:30:33 +0000 (22:30 +0200)]
remove SQLAlchemy 2.1 restriction

9 days agoCI: move linting/mypy into separate task
Sarah Hoffmann [Sun, 11 Oct 2026 20:07:20 +0000 (22:07 +0200)]
CI: move linting/mypy into separate task

9 days agoremove typing workarounds for Protocol, Final and TypedDict
Sarah Hoffmann [Sun, 11 Oct 2026 19:49:25 +0000 (21:49 +0200)]
remove typing workarounds for Protocol, Final and TypedDict

These are all supported for Python >=3.9.

9 days agoadapt to typing changes in SQLAlchemy 2.1
Sarah Hoffmann [Sun, 11 Oct 2026 19:38:16 +0000 (21:38 +0200)]
adapt to typing changes in SQLAlchemy 2.1

9 days agowork around type changes in urllib
Sarah Hoffmann [Sun, 11 Oct 2026 15:28:05 +0000 (17:28 +0200)]
work around type changes in urllib

9 days agoremove mypy sqlalchemy plugin (no longer needed with 2.1)
Sarah Hoffmann [Sun, 11 Oct 2026 15:18:28 +0000 (17:18 +0200)]
remove mypy sqlalchemy plugin (no longer needed with 2.1)

9 days agouse new install groups for CI
Sarah Hoffmann [Sun, 11 Oct 2026 12:43:07 +0000 (14:43 +0200)]
use new install groups for CI

9 days agodocs: Fix a typo (#4216)
Abe Tomoaki [Sun, 11 Oct 2026 12:24:32 +0000 (21:24 +0900)]
docs: Fix a typo (#4216)

enivronment -> environment

10 days agoMerge pull request #4211 from mtmail/pytest-bdd-fixed-backslashes-issue
Sarah Hoffmann [Sat, 10 Oct 2026 16:33:38 +0000 (18:33 +0200)]
Merge pull request #4211 from mtmail/pytest-bdd-fixed-backslashes-issue

pytest-bdd 9.0 no longer over-quotes, we can tweak our workaround

2 weeks agoDocumentation: point to helper script cutting down TIGER data
marc tobias [Thu, 1 Oct 2026 13:52:13 +0000 (15:52 +0200)]
Documentation: point to helper script cutting down TIGER data

2 weeks agopytest-bdd 9.0 no longer over-quotes, we can tweak our workaround
marc tobias [Wed, 30 Sep 2026 23:08:20 +0000 (01:08 +0200)]
pytest-bdd 9.0 no longer over-quotes, we can tweak our workaround

2 weeks agoMerge pull request #4206 from mtmail/pin-sqlalchemy-below-2.1
Sarah Hoffmann [Wed, 30 Sep 2026 19:04:56 +0000 (21:04 +0200)]
Merge pull request #4206 from mtmail/pin-sqlalchemy-below-2.1

SqlAlchemy 2.1 deprecates some features we use. Staying with <2.1 for now

3 weeks agoSqlAlchemy 2.1 deprecates some features we use. We stay with older verion for now
marc tobias [Tue, 29 Sep 2026 22:05:47 +0000 (00:05 +0200)]
SqlAlchemy 2.1 deprecates some features we use. We stay with older verion for now

4 weeks agoMerge pull request #4199 from lonvia/remove-hardcoded-address-tags
Sarah Hoffmann [Wed, 16 Sep 2026 14:01:06 +0000 (16:01 +0200)]
Merge pull request #4199 from lonvia/remove-hardcoded-address-tags

Remove hard-coded handling of some special address tags

4 weeks agoMerge pull request #4198 from lonvia/improve-postcode-parsing
Sarah Hoffmann [Wed, 16 Sep 2026 13:07:36 +0000 (15:07 +0200)]
Merge pull request #4198 from lonvia/improve-postcode-parsing

Take token breaks into account during postcode parsing

4 weeks agoremove hard-coded handling of some special address tags
Sarah Hoffmann [Wed, 16 Sep 2026 09:43:04 +0000 (11:43 +0200)]
remove hard-coded handling of some special address tags

Now configurable via sanitizers

4 weeks agoignore token breaks in postcode parser
Sarah Hoffmann [Wed, 16 Sep 2026 09:37:55 +0000 (11:37 +0200)]
ignore token breaks in postcode parser

4 weeks agomake space in Falkland postcode pattern optional
Sarah Hoffmann [Wed, 16 Sep 2026 08:57:23 +0000 (10:57 +0200)]
make space in Falkland postcode pattern optional

5 weeks agoMerge pull request #4197 from lonvia/refactor-query
Sarah Hoffmann [Tue, 15 Sep 2026 16:04:02 +0000 (18:04 +0200)]
Merge pull request #4197 from lonvia/refactor-query

Further refactoring of Query struct

5 weeks agoadd function to make final query node
Sarah Hoffmann [Tue, 15 Sep 2026 12:58:17 +0000 (14:58 +0200)]
add function to make final query node

5 weeks agomove break penalties into generic query struct
Sarah Hoffmann [Tue, 15 Sep 2026 09:29:13 +0000 (11:29 +0200)]
move break penalties into generic query struct

5 weeks agoadd helper function for computing penalty of partials
Sarah Hoffmann [Tue, 15 Sep 2026 07:36:14 +0000 (09:36 +0200)]
add helper function for computing penalty of partials

5 weeks agoadd special class for partial tokens
Sarah Hoffmann [Tue, 15 Sep 2026 07:18:02 +0000 (09:18 +0200)]
add special class for partial tokens

Moves the query edge information into this partial token to
avoid having information about the same entity in two different
places.

5 weeks agomove match_phrase() function to generic token
Sarah Hoffmann [Fri, 11 Sep 2026 14:57:51 +0000 (16:57 +0200)]
move match_phrase() function to generic token

This can be useful for other tokenizers as well.

5 weeks agoMerge pull request #4194 from lonvia/tokenizer-specific-sanitizers
Sarah Hoffmann [Fri, 11 Sep 2026 12:01:06 +0000 (14:01 +0200)]
Merge pull request #4194 from lonvia/tokenizer-specific-sanitizers

Tokenizer-specific sanitizers

5 weeks agodocument the new sanitizer settings
Sarah Hoffmann [Fri, 11 Sep 2026 08:54:14 +0000 (10:54 +0200)]
document the new sanitizer settings

5 weeks agomove language tagging sanitizer into icu tokenizer settings
Sarah Hoffmann [Fri, 11 Sep 2026 08:53:55 +0000 (10:53 +0200)]
move language tagging sanitizer into icu tokenizer settings

5 weeks agoallow additional sanitizer definitions in tokenizer config
Sarah Hoffmann [Thu, 10 Sep 2026 21:07:35 +0000 (23:07 +0200)]
allow additional sanitizer definitions in tokenizer config

5 weeks agoMerge pull request #4193 from lonvia/more-parameters-for-lang-tagger
Sarah Hoffmann [Thu, 10 Sep 2026 15:27:52 +0000 (17:27 +0200)]
Merge pull request #4193 from lonvia/more-parameters-for-lang-tagger

Add type and attribute properties to language tagging sanitizer

5 weeks agoMerge pull request #4192 from lonvia/fix-token-stripping
Sarah Hoffmann [Thu, 10 Sep 2026 10:04:42 +0000 (12:04 +0200)]
Merge pull request #4192 from lonvia/fix-token-stripping

Fix cleaning of token_info

5 weeks agorestrict fallback to sanitizer rules in tokenizer
Sarah Hoffmann [Thu, 10 Sep 2026 09:44:36 +0000 (11:44 +0200)]
restrict fallback to sanitizer rules in tokenizer

Only fall back to loading general sanitizer rules from the
ICU tokeinzer config when the ICU tokenizer is actually configured.

5 weeks agoadd type and attribute properties to language tagging sanitizer
Sarah Hoffmann [Thu, 10 Sep 2026 09:25:30 +0000 (11:25 +0200)]
add type and attribute properties to language tagging sanitizer

5 weeks agoMerge pull request #4191 from lonvia/split-up-tokenizer
Sarah Hoffmann [Thu, 10 Sep 2026 09:28:08 +0000 (11:28 +0200)]
Merge pull request #4191 from lonvia/split-up-tokenizer

Convert ICU tokenizer from module to package

5 weeks agofix cleaning of token_info
Sarah Hoffmann [Thu, 10 Sep 2026 08:22:57 +0000 (10:22 +0200)]
fix cleaning of token_info

5 weeks agosplit ICU tokenizer into multiple files
Sarah Hoffmann [Thu, 10 Sep 2026 07:49:36 +0000 (09:49 +0200)]
split ICU tokenizer into multiple files

5 weeks agoallow tokenizers to be packages
Sarah Hoffmann [Wed, 9 Sep 2026 14:06:41 +0000 (16:06 +0200)]
allow tokenizers to be packages

5 weeks agoMerge pull request #4189 from lonvia/falcon-traceback
Sarah Hoffmann [Thu, 10 Sep 2026 07:11:25 +0000 (09:11 +0200)]
Merge pull request #4189 from lonvia/falcon-traceback

Add a fallback exception handler for the falcon server

5 weeks agofalcon server: print traceback in debug view in case of internal errors
Sarah Hoffmann [Wed, 9 Sep 2026 13:40:28 +0000 (15:40 +0200)]
falcon server: print traceback in debug view in case of internal errors

5 weeks agoMerge pull request #4184 from pawank925/fix-secondary-main-tags-extratags
Sarah Hoffmann [Wed, 9 Sep 2026 08:07:48 +0000 (10:07 +0200)]
Merge pull request #4184 from pawank925/fix-secondary-main-tags-extratags

keep secondary main tags in extratags

6 weeks agoUpdate tests for secondary main tags in extratags
pawank925 [Tue, 8 Sep 2026 11:17:08 +0000 (16:47 +0530)]
Update tests for secondary main tags in extratags

Secondary main tags that lose the class/type selection are now kept in
extratags when extra tags are collected. Update the affected BDD tests
to expect the secondary main tags in the extratags column:

* main_with_extra: the losing bridge/highway main tag now shows up in
  extratags.
* simple.feature: split the extratags style into its own scenario
  because only that style collects the secondary place tag into
  extratags.

6 weeks agoPush secondary main tags into extratags
pawank925 [Tue, 8 Sep 2026 11:17:08 +0000 (16:47 +0530)]
Push secondary main tags into extratags

When an object carries several main tags, Nominatim converts all of
them into categories but only places a single one into class/type.
The remaining main tags were dropped entirely, so they were no longer
accessible in the results (categories are not returned).

Keep secondary main tags in extratags instead of removing them from
the extratags set. Only the winning main tag that became class/type is
excluded from extratags. Because extratags are only collected when the
Lua style is configured to keep extra tags, the behaviour in the
default import (extra tags disabled) is unchanged.

Adds a BDD test covering secondary main tags being kept in extratags.

6 weeks agoMerge pull request #4188 from lonvia/fix-pygments-regression
Sarah Hoffmann [Tue, 8 Sep 2026 08:30:51 +0000 (10:30 +0200)]
Merge pull request #4188 from lonvia/fix-pygments-regression

Fix SQL debug output for newer pygments versions

6 weeks agoadd semicolon after SQL debug output
Sarah Hoffmann [Mon, 7 Sep 2026 20:51:42 +0000 (22:51 +0200)]
add semicolon after SQL debug output

6 weeks agomanual line breaaking for pygments formatted HTML
Sarah Hoffmann [Mon, 7 Sep 2026 20:48:01 +0000 (22:48 +0200)]
manual line breaaking for pygments formatted HTML

Works around a regression in Pygments in 2.20.0 where the
lineseparator is suddenly HTML escaped.

6 weeks agoMerge pull request #4186 from lonvia/ci-ubuntu-26
Sarah Hoffmann [Sun, 6 Sep 2026 16:04:34 +0000 (18:04 +0200)]
Merge pull request #4186 from lonvia/ci-ubuntu-26

CI: switch to Ubunti24/26 images

6 weeks agoCI: switch to Ubuntu 26
Sarah Hoffmann [Sun, 6 Sep 2026 09:57:45 +0000 (11:57 +0200)]
CI: switch to Ubuntu 26

6 weeks agoCI: update action scripts
Sarah Hoffmann [Sun, 6 Sep 2026 09:52:27 +0000 (11:52 +0200)]
CI: update action scripts

6 weeks agorelease 5.3.2.post11
Sarah Hoffmann [Sat, 5 Sep 2026 15:45:41 +0000 (17:45 +0200)]
release 5.3.2.post11

6 weeks agoMerge remote-tracking branch 'upstream/master'
Sarah Hoffmann [Sat, 5 Sep 2026 15:23:14 +0000 (17:23 +0200)]
Merge remote-tracking branch 'upstream/master'

6 weeks agoMerge pull request #4185 from lonvia/us-postcode-radius
Sarah Hoffmann [Sat, 5 Sep 2026 15:17:55 +0000 (17:17 +0200)]
Merge pull request #4185 from lonvia/us-postcode-radius

Increase postcode extent for the US

6 weeks agoMerge pull request #4177 from justpriyanshu/fix-4172-drop-unwanted-categories
Sarah Hoffmann [Sat, 5 Sep 2026 14:11:19 +0000 (16:11 +0200)]
Merge pull request #4177 from justpriyanshu/fix-4172-drop-unwanted-categories

Fix 4172 drop unwanted categories

6 weeks agoincrease postcode extent for the US
Sarah Hoffmann [Sat, 5 Sep 2026 12:20:17 +0000 (14:20 +0200)]
increase postcode extent for the US

6 weeks agoadd test for unwanted categories in rank computation
justpriyanshu [Fri, 28 Aug 2026 09:15:47 +0000 (09:15 +0000)]
add test for unwanted categories in rank computation

6 weeks agoMerge pull request #4171 from pawank925/fix-unnamed-street-pois
Sarah Hoffmann [Wed, 2 Sep 2026 18:42:48 +0000 (20:42 +0200)]
Merge pull request #4171 from pawank925/fix-unnamed-street-pois

Make POIs on unnamed streets searchable by address #4133

7 weeks agoMerge pull request #4179 from lonvia/improve-parent-search
Sarah Hoffmann [Tue, 1 Sep 2026 18:59:42 +0000 (20:59 +0200)]
Merge pull request #4179 from lonvia/improve-parent-search

Switch nearest road/place search to KNN

7 weeks agodecrease the radius for nearest mapping of streets
Sarah Hoffmann [Tue, 1 Sep 2026 14:53:50 +0000 (16:53 +0200)]
decrease the radius for nearest mapping of streets

7 weeks agoslightly increase update radius for changed streets
Sarah Hoffmann [Tue, 25 Aug 2026 18:22:55 +0000 (20:22 +0200)]
slightly increase update radius for changed streets

7 weeks agouse knn to find nearest street and place
Sarah Hoffmann [Tue, 25 Aug 2026 17:43:47 +0000 (19:43 +0200)]
use knn to find nearest street and place

7 weeks agouse knn search to parent with nearest road
Sarah Hoffmann [Tue, 25 Aug 2026 15:19:45 +0000 (17:19 +0200)]
use knn search to parent with nearest road

7 weeks agoignore unwanted categories when computing ranks
justpriyanshu [Fri, 28 Aug 2026 08:58:09 +0000 (08:58 +0000)]
ignore unwanted categories when computing ranks

The checks for unwanted highway and boundary categories were only used
to decide whether a place is rankable at all. The offending categories
remained in the category list, so compute_place_rank() would still pick
up their ranks. Move the checks into drop_unwanted_categories() and
filter the categories before computing ranks.

Refs #4172

8 weeks agoMerge pull request #4166 from Itz-Agasta/docs-category-series
Sarah Hoffmann [Sat, 22 Aug 2026 19:58:19 +0000 (21:58 +0200)]
Merge pull request #4166 from Itz-Agasta/docs-category-series

Update the documentation for the category series

2 months agoAdd a migration note about the categories column
Itz-Agasta [Fri, 14 Aug 2026 07:24:37 +0000 (12:54 +0530)]
Add a migration note about the categories column

2 months agoUpdate the details documentation for merged place entries
Itz-Agasta [Fri, 14 Aug 2026 07:24:37 +0000 (12:54 +0530)]
Update the details documentation for merged place entries

2 months agoDocument the include and exclude search parameters
Itz-Agasta [Fri, 14 Aug 2026 07:24:37 +0000 (12:54 +0530)]
Document the include and exclude search parameters

2 months agoDocument categories in the import style documentation
Itz-Agasta [Fri, 14 Aug 2026 07:24:37 +0000 (12:54 +0530)]
Document categories in the import style documentation

An object with several main tags gets one database entry with a category
per tag now, instead of one entry per tag. Describe how a category is
built from a main tag and which of the main tags ends up as the class and
type of the place. Fallback tags always contribute a category now, they
only lose the race for class and type.

2 months agoUpdate the database layout documentation
Itz-Agasta [Fri, 14 Aug 2026 07:24:37 +0000 (12:54 +0530)]
Update the database layout documentation

The place table holds a single row per OSM object now, with a categories
column that carries all of its main tags. Document that, the categories
column on placex and the tables that were added since the page was last
touched: place_entrance, placex_entrance, place_associated_street and
location_area_country. The place_classtype tables are gone, so drop them
from the list of auxiliary tables.

Also bring the diagrams back in line with the schema. search_name lost
its search_rank column a while ago and location_postcodes gained is_area,
while its centroid was missing from the diagram because of a typo.

2 months agoMerge pull request #4164 from Itz-Agasta/category-support
Sarah Hoffmann [Tue, 18 Aug 2026 13:43:26 +0000 (15:43 +0200)]
Merge pull request #4164 from Itz-Agasta/category-support

Add category filters to the search API

2 months agoAdd search terms for POIs on unnamed streets
pawank925 [Sun, 16 Aug 2026 18:01:26 +0000 (23:31 +0530)]
Add search terms for POIs on unnamed streets

When a POI is parented to an unnamed street, the street has no entry in
the search_name table. The POI then gets no address terms at all and
can only be found by its name. Use the address objects of the parent
from place_addressline to fill in the missing address terms.

2 months agoAdd BDD tests for repeated include/exclude parameters
Itz-Agasta [Sat, 15 Aug 2026 15:34:45 +0000 (21:04 +0530)]
Add BDD tests for repeated include/exclude parameters

A parameter listed more than once in the step table is now sent as a
repeated request parameter.

2 months agoUse the categories column for category matching on SQLite as well
Itz-Agasta [Sat, 15 Aug 2026 15:34:30 +0000 (21:04 +0530)]
Use the categories column for category matching on SQLite as well

CategoryMatch fell back to the class/type columns on SQLite only
because the categories column was unreadable there. With the result
processor fixed, the substring emulation works for all cases, so the
two functions collapse into one. It also matches merged rows, where
the class/type pair only carries the first of several categories.

The placex(class_, type) index stays, it is still used by the
qualifier restriction of the name searches.

2 months agoOnly accept underscores in category filters
Itz-Agasta [Sat, 15 Aug 2026 15:34:22 +0000 (21:04 +0530)]
Only accept underscores in category filters

The conversion from hyphens to underscores in the Lua code exists for
compatibility with OSM tags we have no influence over. The API can be
strict instead.

2 months agoMake get_all() an abstract method of ASGIAdaptor
Itz-Agasta [Sat, 15 Aug 2026 15:34:10 +0000 (21:04 +0530)]
Make get_all() an abstract method of ASGIAdaptor

A default implementation that silently returns only the first value
hides a missing override in a new adaptor implementation.

2 months agoAdd include/exclude parameters to the search endpoint
Itz-Agasta [Wed, 12 Aug 2026 08:10:06 +0000 (13:40 +0530)]
Add include/exclude parameters to the search endpoint

2 months agoFilter search results by category
Itz-Agasta [Wed, 12 Aug 2026 08:10:06 +0000 (13:40 +0530)]
Filter search results by category

Applies to every search returning placex rows. Sources without
categories return nothing when an include filter is given.