]> git.openstreetmap.org Git - nominatim.git/commitdiff
restrict postcode searches to postcode in first token
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 6 Oct 2020 12:00:43 +0000 (14:00 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 6 Oct 2020 12:08:31 +0000 (14:08 +0200)
In structured queries we should only assume that it is
a postcode search when only the postcode and optionally
the country is given. If any other term is present, it
is better to avoid the search for postcode as it yields
too many bad searches. Given that the terms in a structured
query are ordered, this means that the postcode must be
the first token just like in the unstructured query.

Fixes #1988.

lib/SearchDescription.php

index 33b766a5f5fcacbe09f596d6221370ca49456ef9..ad404528968ad94075bc414af0bc0f5a185873cc 100644 (file)
@@ -199,15 +199,10 @@ class SearchDescription
         } elseif (($sPhraseType == '' || $sPhraseType == 'postalcode')
                   && is_a($oSearchTerm, '\Nominatim\Token\Postcode')
         ) {
-            // We need to try the case where the postal code is the primary element
-            // (i.e. no way to tell if it is (postalcode, city) OR (city, postalcode)
-            // so try both.
             if (!$this->sPostcode) {
                 // If we have structured search or this is the first term,
                 // make the postcode the primary search element.
-                if ($this->iOperator == Operator::NONE
-                    && ($sPhraseType == 'postalcode' || $bFirstToken)
-                ) {
+                if ($this->iOperator == Operator::NONE && $bFirstToken) {
                     $oSearch = clone $this;
                     $oSearch->iSearchRank++;
                     $oSearch->iOperator = Operator::POSTCODE;