From f23a860b33146f23f7dc40524110a03f69a0a833 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Fri, 2 Mar 2018 00:26:48 +0100 Subject: [PATCH] second attempt at strict names in structured queries If a term does not go into names it should go into address terms. --- lib/SearchDescription.php | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/lib/SearchDescription.php b/lib/SearchDescription.php index a1910231..2e72decc 100644 --- a/lib/SearchDescription.php +++ b/lib/SearchDescription.php @@ -276,11 +276,12 @@ class SearchDescription && $sPhraseType != 'country' ) { $iWordID = $aSearchTerm['word_id']; - if (sizeof($this->aName)) { - if (($sPhraseType == '' || !$bFirstPhrase) - && $sPhraseType != 'country' - && !$bHasPartial - ) { + // Full words can only be a name if they appear at the beginning + // of the phrase. In structured search the name must forcably in + // the first phrase. In unstructured search it may be in a later + // phrase when the first phrase is a house number. + if (sizeof($this->aName) || !($bFirstPhrase || $sPhraseType == '')) { + if (($sPhraseType == '' || !$bFirstPhrase) && !$bHasPartial) { $oSearch = clone $this; $oSearch->iSearchRank++; $oSearch->aAddress[$iWordID] = $iWordID; @@ -289,14 +290,10 @@ class SearchDescription $this->aFullNameAddress[$iWordID] = $iWordID; } } else { - // in structured search only the first phrase can be the - // designated name - if ($sPhraseType == '' || $bFirstPhrase) { - $oSearch = clone $this; - $oSearch->iSearchRank++; - $oSearch->aName = array($iWordID => $iWordID); - $aNewSearches[] = $oSearch; - } + $oSearch = clone $this; + $oSearch->iSearchRank++; + $oSearch->aName = array($iWordID => $iWordID); + $aNewSearches[] = $oSearch; } } -- 2.39.5