Merge pull request #745 from lonvia/restrict-poi-queries-results

limit number of considered places in POI queries
This commit is contained in:
Sarah Hoffmann
2017-06-06 20:55:15 +02:00
committed by GitHub
2 changed files with 7 additions and 4 deletions

View File

@@ -1555,8 +1555,9 @@ class Geocode
}
if (!$aSearch['sOperator'] || $aSearch['sOperator'] == 'near') { // & in
$sClassTable = 'place_classtype_'.$aSearch['sClass'].'_'.$aSearch['sType'];
$sSQL = "SELECT count(*) FROM pg_tables ";
$sSQL .= "WHERE tablename = 'place_classtype_".$aSearch['sClass']."_".$aSearch['sType']."'";
$sSQL .= "WHERE tablename = '$sClassTable'";
$bCacheTable = chksql($this->oDB->getOne($sSQL));
$sSQL = "SELECT min(rank_search) FROM placex WHERE place_id in ($sPlaceIDs)";
@@ -1604,7 +1605,8 @@ class Geocode
$sOrderBysSQL = "ST_Distance(st_centroid('".$sPlaceGeom."'), l.centroid)";
}
$sSQL = "select distinct l.place_id".($sOrderBySQL?','.$sOrderBySQL:'')." from place_classtype_".$aSearch['sClass']."_".$aSearch['sType']." as l";
$sSQL = "select distinct i.place_id".($sOrderBySQL?', i.order_term':'')." from (";
$sSQL .= "select l.place_id".($sOrderBySQL?','.$sOrderBySQL.' as order_term':'')." from ".$sClassTable." as l";
if ($sCountryCodesSQL) $sSQL .= " join placex as lp using (place_id)";
if ($sPlaceIDs) {
$sSQL .= ",placex as f where ";
@@ -1618,7 +1620,8 @@ class Geocode
$sSQL .= " and l.place_id not in (".join(',', $this->aExcludePlaceIDs).")";
}
if ($sCountryCodesSQL) $sSQL .= " and lp.country_code in ($sCountryCodesSQL)";
if ($sOrderBySQL) $sSQL .= "order by ".$sOrderBySQL." asc";
$sSQL .= 'limit 300) i ';
if ($sOrderBySQL) $sSQL .= "order by order_term asc";
if ($this->iOffset) $sSQL .= " offset $this->iOffset";
$sSQL .= " limit $this->iLimit";
if (CONST_Debug) var_dump($sSQL);

View File

@@ -52,7 +52,7 @@ Feature: Search queries
| way |
Scenario: Search with class-type feature
When sending jsonv2 search query "Hotel California"
When sending jsonv2 search query "Hotel in California"
Then results contain
| place_rank |
| 30 |