mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-12 05:44:06 +00:00
move transliteration of housenumbers into indexing
Housenumbers are now saved in transliterated form in the housenumber column. This saves the transliteration step during lookup.
This commit is contained in:
@@ -621,7 +621,7 @@ class SearchDescription
|
|||||||
$aOrder[0] .= ' SELECT place_id';
|
$aOrder[0] .= ' SELECT place_id';
|
||||||
$aOrder[0] .= ' FROM placex';
|
$aOrder[0] .= ' FROM placex';
|
||||||
$aOrder[0] .= ' WHERE parent_place_id = search_name.place_id';
|
$aOrder[0] .= ' WHERE parent_place_id = search_name.place_id';
|
||||||
$aOrder[0] .= " AND transliteration(housenumber) ~* E'".$sHouseNumberRegex."'";
|
$aOrder[0] .= " AND housenumber ~* E'".$sHouseNumberRegex."'";
|
||||||
$aOrder[0] .= ' LIMIT 1';
|
$aOrder[0] .= ' LIMIT 1';
|
||||||
$aOrder[0] .= ') ';
|
$aOrder[0] .= ') ';
|
||||||
// also housenumbers from interpolation lines table are needed
|
// also housenumbers from interpolation lines table are needed
|
||||||
@@ -751,7 +751,7 @@ class SearchDescription
|
|||||||
$sHouseNumberRegex = '\\\\m'.$this->sHouseNumber.'\\\\M';
|
$sHouseNumberRegex = '\\\\m'.$this->sHouseNumber.'\\\\M';
|
||||||
$sSQL = 'SELECT place_id FROM placex ';
|
$sSQL = 'SELECT place_id FROM placex ';
|
||||||
$sSQL .= 'WHERE parent_place_id in ('.$sPlaceIDs.')';
|
$sSQL .= 'WHERE parent_place_id in ('.$sPlaceIDs.')';
|
||||||
$sSQL .= " AND transliteration(housenumber) ~* E'".$sHouseNumberRegex."'";
|
$sSQL .= " AND housenumber ~* E'".$sHouseNumberRegex."'";
|
||||||
$sSQL .= $this->oContext->excludeSQL(' AND place_id');
|
$sSQL .= $this->oContext->excludeSQL(' AND place_id');
|
||||||
|
|
||||||
Debug::printSQL($sSQL);
|
Debug::printSQL($sSQL);
|
||||||
|
|||||||
@@ -680,6 +680,7 @@ BEGIN
|
|||||||
NEW.housenumber := NEW.address->'housenumber';
|
NEW.housenumber := NEW.address->'housenumber';
|
||||||
i := getorcreate_housenumber_id(make_standard_name(NEW.housenumber));
|
i := getorcreate_housenumber_id(make_standard_name(NEW.housenumber));
|
||||||
END IF;
|
END IF;
|
||||||
|
NEW.housenumber := transliteration(NEW.housenumber);
|
||||||
|
|
||||||
addr_street := NEW.address->'street';
|
addr_street := NEW.address->'street';
|
||||||
addr_place := NEW.address->'place';
|
addr_place := NEW.address->'place';
|
||||||
|
|||||||
@@ -164,12 +164,42 @@ Feature: Import and search of names
|
|||||||
| N | 1 | <nr>, Main St |
|
| N | 1 | <nr>, Main St |
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
| nr |
|
| nr |
|
||||||
| 1 |
|
| 1 |
|
||||||
| 3456 |
|
| 3456 |
|
||||||
| 1 a |
|
| 1 a |
|
||||||
| 56b |
|
| 56b |
|
||||||
| 1 A |
|
| 1 A |
|
||||||
| 2號 |
|
| 2號 |
|
||||||
| 1Б |
|
| 1Б |
|
||||||
| 1 к1 |
|
| 1 к1 |
|
||||||
|
| 23-123 |
|
||||||
|
|
||||||
|
Scenario Outline: Housenumbers in lists are found
|
||||||
|
Given the grid
|
||||||
|
| 1 | | | | 2 |
|
||||||
|
| | | 9 | | |
|
||||||
|
And the places
|
||||||
|
| osm | class | type | name | geometry |
|
||||||
|
| W1 | highway | primary | Main St | 1,2 |
|
||||||
|
And the places
|
||||||
|
| osm | class | type | housenr | geometry |
|
||||||
|
| N1 | building | yes | <nr-list> | 9 |
|
||||||
|
When importing
|
||||||
|
And searching for "Main St <nr>"
|
||||||
|
Then results contain
|
||||||
|
| osm_type | osm_id | name |
|
||||||
|
| N | 1 | <nr-list>, Main St |
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
| nr-list | nr |
|
||||||
|
| 1,2,3 | 1 |
|
||||||
|
| 1,2,3 | 2 |
|
||||||
|
| 1, 2, 3 | 3 |
|
||||||
|
| 45 ;67;3 | 45 |
|
||||||
|
| 45 ;67;3 | 67 |
|
||||||
|
| 1a;1k | 1a |
|
||||||
|
| 1a;1k | 1k |
|
||||||
|
| 34/678 | 34 |
|
||||||
|
| 34/678 | 678 |
|
||||||
|
| 34/678 | 34/678 |
|
||||||
|
|||||||
Reference in New Issue
Block a user