mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 15:47:58 +00:00
add testing for rank adaption while linking
This commit is contained in:
@@ -808,9 +808,7 @@ class Geocode
|
|||||||
$sSQL .= 'WHERE place_id in ('.$sPlaceIds.') ';
|
$sSQL .= 'WHERE place_id in ('.$sPlaceIds.') ';
|
||||||
$sSQL .= ' AND (';
|
$sSQL .= ' AND (';
|
||||||
$sSQL .= " placex.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank ";
|
$sSQL .= " placex.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank ";
|
||||||
if (14 >= $this->iMinAddressRank && 14 <= $this->iMaxAddressRank) {
|
$sSQL .= " OR placex.rank_search between $this->iMinAddressRank and $this->iMaxAddressRank ";
|
||||||
$sSQL .= " OR (extratags->'place') = 'city'";
|
|
||||||
}
|
|
||||||
if ($this->aAddressRankList) {
|
if ($this->aAddressRankList) {
|
||||||
$sSQL .= ' OR placex.rank_address in ('.join(',', $this->aAddressRankList).')';
|
$sSQL .= ' OR placex.rank_address in ('.join(',', $this->aAddressRankList).')';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -660,10 +660,7 @@ class SearchDescription
|
|||||||
$aTerms[] = 'address_rank between 16 and 27';
|
$aTerms[] = 'address_rank between 16 and 27';
|
||||||
} elseif (!$this->sClass || $this->iOperator == Operator::NAME) {
|
} elseif (!$this->sClass || $this->iOperator == Operator::NAME) {
|
||||||
if ($iMinAddressRank > 0) {
|
if ($iMinAddressRank > 0) {
|
||||||
$aTerms[] = 'address_rank >= '.$iMinAddressRank;
|
$aTerms[] = "((address_rank between $iMinAddressRank and $iMaxAddressRank) or (search_rank between $iMinAddressRank and $iMaxAddressRank))";
|
||||||
}
|
|
||||||
if ($iMaxAddressRank < 30) {
|
|
||||||
$aTerms[] = 'address_rank <= '.$iMaxAddressRank;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -841,8 +841,10 @@ BEGIN
|
|||||||
NEW.centroid := coalesce(location.centroid,
|
NEW.centroid := coalesce(location.centroid,
|
||||||
ST_Centroid(location.geometry));
|
ST_Centroid(location.geometry));
|
||||||
|
|
||||||
-- Use the address rank of the linked place
|
-- Use the address rank of the linked place, if it has one
|
||||||
NEW.rank_address := location.rank_address;
|
IF location.rank_address between 5 and 25 THEN
|
||||||
|
NEW.rank_address := location.rank_address;
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- merge in the label name
|
-- merge in the label name
|
||||||
IF NOT location.name IS NULL THEN
|
IF NOT location.name IS NULL THEN
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ Feature: Linking of places
|
|||||||
Scenario: Boundaries with place tags are linked against places with same type
|
Scenario: Boundaries with place tags are linked against places with same type
|
||||||
Given the places
|
Given the places
|
||||||
| osm | class | type | admin | name | extra+place | geometry |
|
| osm | class | type | admin | name | extra+place | geometry |
|
||||||
| R13 | boundary | administrative | 5 | Berlin | city |poly-area:0.1 |
|
| R13 | boundary | administrative | 4 | Berlin | city |poly-area:0.1 |
|
||||||
And the places
|
And the places
|
||||||
| osm | class | type | name | geometry |
|
| osm | class | type | name | geometry |
|
||||||
| N2 | place | city | Berlin | 0.006 0.00001 |
|
| N2 | place | city | Berlin | 0.006 0.00001 |
|
||||||
@@ -157,11 +157,24 @@ Feature: Linking of places
|
|||||||
And placex contains
|
And placex contains
|
||||||
| object | rank_address |
|
| object | rank_address |
|
||||||
| R13 | 16 |
|
| R13 | 16 |
|
||||||
|
When searching for ""
|
||||||
|
| city |
|
||||||
|
| Berlin |
|
||||||
|
Then results contain
|
||||||
|
| ID | osm_type | osm_id |
|
||||||
|
| 0 | R | 13 |
|
||||||
|
When searching for ""
|
||||||
|
| state |
|
||||||
|
| Berlin |
|
||||||
|
Then results contain
|
||||||
|
| ID | osm_type | osm_id |
|
||||||
|
| 0 | R | 13 |
|
||||||
|
|
||||||
|
|
||||||
Scenario: Boundaries without place tags only link against same admin level
|
Scenario: Boundaries without place tags only link against same admin level
|
||||||
Given the places
|
Given the places
|
||||||
| osm | class | type | admin | name | geometry |
|
| osm | class | type | admin | name | geometry |
|
||||||
| R13 | boundary | administrative | 5 | Berlin |poly-area:0.1 |
|
| R13 | boundary | administrative | 4 | Berlin |poly-area:0.1 |
|
||||||
And the places
|
And the places
|
||||||
| osm | class | type | name | geometry |
|
| osm | class | type | name | geometry |
|
||||||
| N2 | place | city | Berlin | 0.006 0.00001 |
|
| N2 | place | city | Berlin | 0.006 0.00001 |
|
||||||
@@ -171,5 +184,17 @@ Feature: Linking of places
|
|||||||
| N2 | - |
|
| N2 | - |
|
||||||
And placex contains
|
And placex contains
|
||||||
| object | rank_address |
|
| object | rank_address |
|
||||||
| R13 | 10 |
|
| R13 | 8 |
|
||||||
|
When searching for ""
|
||||||
|
| state |
|
||||||
|
| Berlin |
|
||||||
|
Then results contain
|
||||||
|
| ID | osm_type | osm_id |
|
||||||
|
| 0 | R | 13 |
|
||||||
|
When searching for ""
|
||||||
|
| city |
|
||||||
|
| Berlin |
|
||||||
|
Then results contain
|
||||||
|
| ID | osm_type | osm_id |
|
||||||
|
| 0 | N | 2 |
|
||||||
|
|
||||||
|
|||||||
@@ -297,7 +297,8 @@ def query_cmd(context, query, dups):
|
|||||||
"""
|
"""
|
||||||
cmd = ['/usr/bin/env', 'php']
|
cmd = ['/usr/bin/env', 'php']
|
||||||
cmd.append(os.path.join(context.nominatim.build_dir, 'utils', 'query.php'))
|
cmd.append(os.path.join(context.nominatim.build_dir, 'utils', 'query.php'))
|
||||||
cmd.extend(['--search', query])
|
if query:
|
||||||
|
cmd.extend(['--search', query])
|
||||||
# add more parameters in table form
|
# add more parameters in table form
|
||||||
if context.table:
|
if context.table:
|
||||||
for h in context.table.headings:
|
for h in context.table.headings:
|
||||||
|
|||||||
Reference in New Issue
Block a user