<?php
+ /**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
namespace Nominatim;
}
$aReverseGroupedSearches = $this->getGroupedSearches($aSearches, $aPhrases, $oValidTokens);
- foreach ($aGroupedSearches as $aSearches) {
+ foreach ($aReverseGroupedSearches as $aSearches) {
foreach ($aSearches as $aSearch) {
- if (!isset($aReverseGroupedSearches[$aSearch->getRank()])) {
- $aReverseGroupedSearches[$aSearch->getRank()] = array();
+ if (!isset($aGroupedSearches[$aSearch->getRank()])) {
+ $aGroupedSearches[$aSearch->getRank()] = array();
}
- $aReverseGroupedSearches[$aSearch->getRank()][] = $aSearch;
+ $aGroupedSearches[$aSearch->getRank()][] = $aSearch;
}
}
- $aGroupedSearches = $aReverseGroupedSearches;
ksort($aGroupedSearches);
}
} else {
}
}
- if ($iQueryLoop > 20) {
+ if ($iQueryLoop > 30) {
break;
}
}
$aResults = $tempIDs;
}
- if (!empty($aResults) || $iGroupLoop > 4 || $iQueryLoop > 30) {
+ if (!empty($aResults) || $iGroupLoop > 6 || $iQueryLoop > 40) {
break;
}
}
<?php
+ /**
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ * This file is part of Nominatim. (https://nominatim.org)
+ *
+ * Copyright (C) 2022 by the Nominatim developer community.
+ * For a full list of authors see the git log.
+ */
require_once(CONST_LibDir.'/init-website.php');
require_once(CONST_LibDir.'/log.php');
$hLog = logStart($oDB, 'search', $oGeocode->getQueryString(), $aLangPrefOrder);
-$aSearchResults = $oGeocode->lookup();
+// Ignore requests from a faulty app.
+if ($oGeocode->getQueryString() === '-1,-1') {
+ $aSearchResults = array();
+} else {
+ $aSearchResults = $oGeocode->lookup();
+}
logEnd($oDB, $hLog, count($aSearchResults));
+ -- SPDX-License-Identifier: GPL-2.0-only
+ --
+ -- This file is part of Nominatim. (https://nominatim.org)
+ --
+ -- Copyright (C) 2022 by the Nominatim developer community.
+ -- For a full list of authors see the git log.
+
-- Functions for returning address information for a place.
DROP TYPE IF EXISTS addressline CASCADE;
FOR location IN
SELECT placex.place_id, osm_type, osm_id, name, class, type,
coalesce(extratags->'linked_place', extratags->'place') as place_type,
- admin_level, fromarea, isaddress,
+ admin_level, fromarea, isaddress and linked_place_id is NULL as isaddress,
CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
distance, country_code, postcode
FROM place_addressline join placex on (address_place_id = placex.place_id)