diff --git a/src/PropertySuggester/GetSuggestions.php b/src/PropertySuggester/GetSuggestions.php index b0139f0..6d41133 100644 --- a/src/PropertySuggester/GetSuggestions.php +++ b/src/PropertySuggester/GetSuggestions.php @@ -154,6 +154,7 @@ private function querySearchApi( $resultSize, $search, $language ) { 'search' => $search, 'action' => 'wbsearchentities', 'language' => $language, + 'uselang' => $language, 'type' => Property::ENTITY_TYPE ) ); diff --git a/src/PropertySuggester/ResultBuilder.php b/src/PropertySuggester/ResultBuilder.php index 1b9077f..71947d6 100644 --- a/src/PropertySuggester/ResultBuilder.php +++ b/src/PropertySuggester/ResultBuilder.php @@ -113,9 +113,14 @@ private function buildEntry( EntityId $id, array $clusteredTerms, Suggestion $su break; } } - if ( !isset($entry['label'] ) ) { + + if ( !isset( $entry['label'] ) ) { $entry['label'] = $id->getSerialization(); + } elseif ( preg_match( $this->searchPattern, $entry['label'] ) ) { + // No aliases needed in the output when the label already is a successful match. + unset( $entry['aliases'] ); } + return $entry; } @@ -141,6 +146,11 @@ private function clusterTerms( array $terms ) { * @param TermIndexEntry $term */ private function checkAndSetAlias( array &$entry, TermIndexEntry $term ) { + // Do not add more than one matching alias to the "aliases" field. + if ( !empty( $entry['aliases'] ) ) { + return; + } + if ( preg_match( $this->searchPattern, $term->getText() ) ) { if ( !isset( $entry['aliases'] ) ) { $entry['aliases'] = array();