mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-12-26 06:22:13 +03:00
fix search for postcode via structured query
Results from the artifical postcode table were dropped when reevaluating rank of results.
This commit is contained in:
parent
eacaf3489e
commit
e3323e8888
@ -1738,9 +1738,11 @@ class Geocode
|
||||
// Need to verify passes rank limits before dropping out of the loop (yuk!)
|
||||
// reduces the number of place ids, like a filter
|
||||
// rank_address is 30 for interpolated housenumbers
|
||||
$sWherePlaceId = 'WHERE place_id in (';
|
||||
$sWherePlaceId .= join(',', array_keys($aResultPlaceIDs)).') ';
|
||||
|
||||
$sSQL = "SELECT place_id ";
|
||||
$sSQL .= "FROM placex ";
|
||||
$sSQL .= "WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).") ";
|
||||
$sSQL .= "FROM placex ".$sWherePlaceId;
|
||||
$sSQL .= " AND (";
|
||||
$sSQL .= " placex.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank ";
|
||||
if (14 >= $this->iMinAddressRank && 14 <= $this->iMaxAddressRank) {
|
||||
@ -1749,18 +1751,22 @@ class Geocode
|
||||
if ($this->aAddressRankList) {
|
||||
$sSQL .= " OR placex.rank_address in (".join(',', $this->aAddressRankList).")";
|
||||
}
|
||||
$sSQL .= " ) ";
|
||||
$sSQL .= " ) UNION ";
|
||||
$sSQL .= " SELECT place_id FROM location_postcode lp ".$sWherePlaceId;
|
||||
$sSQL .= " AND (lp.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank ";
|
||||
if ($this->aAddressRankList) {
|
||||
$sSQL .= " OR lp.rank_address in (".join(',', $this->aAddressRankList).")";
|
||||
}
|
||||
$sSQL .= ") ";
|
||||
if (CONST_Use_US_Tiger_Data && $this->iMaxAddressRank == 30) {
|
||||
$sSQL .= "UNION ";
|
||||
$sSQL .= " SELECT place_id ";
|
||||
$sSQL .= " FROM location_property_tiger ";
|
||||
$sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).") ";
|
||||
$sSQL .= " FROM location_property_tiger ".$sWherePlaceId;
|
||||
}
|
||||
if ($this->iMaxAddressRank == 30) {
|
||||
$sSQL .= "UNION ";
|
||||
$sSQL .= " SELECT place_id ";
|
||||
$sSQL .= " FROM location_property_osmline ";
|
||||
$sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).")";
|
||||
$sSQL .= " FROM location_property_osmline ".$sWherePlaceId;
|
||||
}
|
||||
if (CONST_Debug) var_dump($sSQL);
|
||||
$aFilteredPlaceIDs = chksql($this->oDB->getCol($sSQL));
|
||||
|
@ -25,3 +25,11 @@ Feature: Searches with postcodes
|
||||
Then result addresses contain
|
||||
| country_code |
|
||||
| li |
|
||||
|
||||
Scenario: Postcode search with structured query
|
||||
When sending json search query "" with address
|
||||
| postalcode | country |
|
||||
| 9490 | li |
|
||||
Then result addresses contain
|
||||
| country_code | postcode |
|
||||
| li | 9490 |
|
||||
|
Loading…
Reference in New Issue
Block a user