[MediaWiki-commits] [Gerrit] mediawiki...CirrusSearch[master]: Externalize comp suggest builder code

2017-11-01 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/387558 )

Change subject: Externalize comp suggest builder code
..


Externalize comp suggest builder code

The CompletionSuggester was a bit hairy, the goal is to
- externalize the code responsible for building the suggest to its own class.
- reduce mutable states
- use more Elastica classes

Bug: T178906
Change-Id: Ie3ea3b0c2718c1cc5ac079a703cfc92dac86e934
---
M autoload.php
M includes/CompletionSuggester.php
A includes/Query/CompSuggestQueryBuilder.php
M tests/unit/CompletionSuggesterTest.php
4 files changed, 382 insertions(+), 376 deletions(-)

Approvals:
  Cindy-the-browser-test-bot: Looks good to me, but someone else must approve
  EBernhardson: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/autoload.php b/autoload.php
index 8ecde96..77c95f1 100644
--- a/autoload.php
+++ b/autoload.php
@@ -113,6 +113,7 @@
'CirrusSearch\\PhraseSuggesterProfiles' => __DIR__ . 
'/profiles/PhraseSuggesterProfiles.php',
'CirrusSearch\\Query\\BaseSimpleKeywordFeatureTest' => __DIR__ . 
'/tests/unit/Query/BaseSimpleKeywordFeatureTest.php',
'CirrusSearch\\Query\\BoostTemplatesFeature' => __DIR__ . 
'/includes/Query/BoostTemplatesFeature.php',
+   'CirrusSearch\\Query\\CompSuggestQueryBuilder' => __DIR__ . 
'/includes/Query/CompSuggestQueryBuilder.php',
'CirrusSearch\\Query\\ContentModelFeature' => __DIR__ . 
'/includes/Query/ContentModelFeature.php',
'CirrusSearch\\Query\\FileNumericFeature' => __DIR__ . 
'/includes/Query/FileNumericFeature.php',
'CirrusSearch\\Query\\FileTypeFeature' => __DIR__ . 
'/includes/Query/FileTypeFeature.php',
diff --git a/includes/CompletionSuggester.php b/includes/CompletionSuggester.php
index 27317c4..fd2f0db 100644
--- a/includes/CompletionSuggester.php
+++ b/includes/CompletionSuggester.php
@@ -2,16 +2,14 @@
 
 namespace CirrusSearch;
 
-use CirrusSearch;
-use Elastica\Request;
-use CirrusSearch\BuildDocument\Completion\SuggestBuilder;
+use CirrusSearch\Query\CompSuggestQueryBuilder;
+use Elastica\Exception\ExceptionInterface;
+use Elastica\Index;
+use Elastica\Query;
 use CirrusSearch\Search\SearchContext;
 use MediaWiki\MediaWikiServices;
-use SearchSuggestion;
 use SearchSuggestionSet;
 use Status;
-use ApiUsageException;
-use UsageException;
 use User;
 
 /**
@@ -57,49 +55,41 @@
  * in suggest profiles to fetch more than what the use asked.
  */
 class CompletionSuggester extends ElasticsearchIntermediary {
-   const VARIANT_EXTRA_DISCOUNT = 0.0001;
/**
-* @var string term to search.
-*/
-   private $term;
-
-   /**
-* @var string[]|null search variants
-*/
-   private $variants;
-
-   /**
-* @var integer maximum number of result
+* @var integer maximum number of result (final)
 */
private $limit;
 
/**
-* @var integer offset
+* @var integer offset (final)
 */
private $offset;
 
/**
-* @var string index base name to use
+* @var string index base name to use (final)
 */
private $indexBaseName;
 
/**
-* Search environment configuration
+* @var Index (final)
+*/
+   private $completionIndex;
+
+   /**
+* Search environment configuration (final)
 * @var SearchConfig
 */
private $config;
 
/**
-* @var string Query type (comp_suggest_geo or comp_suggest)
-*/
-   public $queryType;
-
-   /**
-* @var SearchContext
+* @var SearchContext (final)
 */
private $searchContext;
 
-   private $settings;
+   /**
+* @var CompSuggestQueryBuilder $compSuggestBuilder (final)
+*/
+   private $compSuggestBuilder;
 
/**
 * @param Connection $conn
@@ -126,36 +116,19 @@
$this->limit = $limit;
$this->offset = $offset;
$this->indexBaseName = $index ?: $config->get( 
SearchConfig::INDEX_BASE_NAME );
+   $this->completionIndex = $this->connection->getIndex( 
$this->indexBaseName,
+   Connection::TITLE_SUGGEST_TYPE );
$this->searchContext = new SearchContext( $this->config, 
$namespaces );
 
if ( $profileName == null ) {
$profileName = $this->config->get( 
'CirrusSearchCompletionSettings' );
}
-   $this->settings = $this->config->getElement( 
'CirrusSearchCompletionProfiles', $profileName );
-   }
-
-   /**
-* @param string $search
-* @throws ApiUsageException
-* @throws UsageException
-*/
-   private function checkRequestLength( $search ) {
-   $requestLength = mb_strlen( $search );
-   if ( $requestLength > CirrusSearc

[MediaWiki-commits] [Gerrit] mediawiki...CirrusSearch[master]: Externalize comp suggest builder code

2017-10-31 Thread DCausse (Code Review)
DCausse has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/387558 )

Change subject: Externalize comp suggest builder code
..

Externalize comp suggest builder code

The CompletionSuggester was a bit hairy, the goal is to
- externalize the code responsible for building the suggest to its own class.
- reduce mutable states
- use more Elastica classes

Bug: T178906
Change-Id: Ie3ea3b0c2718c1cc5ac079a703cfc92dac86e934
---
M autoload.php
M includes/CompletionSuggester.php
A includes/Query/CompSuggestQueryBuilder.php
M tests/unit/CompletionSuggesterTest.php
4 files changed, 391 insertions(+), 369 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CirrusSearch 
refs/changes/58/387558/1

diff --git a/autoload.php b/autoload.php
index 8ecde96..77c95f1 100644
--- a/autoload.php
+++ b/autoload.php
@@ -113,6 +113,7 @@
'CirrusSearch\\PhraseSuggesterProfiles' => __DIR__ . 
'/profiles/PhraseSuggesterProfiles.php',
'CirrusSearch\\Query\\BaseSimpleKeywordFeatureTest' => __DIR__ . 
'/tests/unit/Query/BaseSimpleKeywordFeatureTest.php',
'CirrusSearch\\Query\\BoostTemplatesFeature' => __DIR__ . 
'/includes/Query/BoostTemplatesFeature.php',
+   'CirrusSearch\\Query\\CompSuggestQueryBuilder' => __DIR__ . 
'/includes/Query/CompSuggestQueryBuilder.php',
'CirrusSearch\\Query\\ContentModelFeature' => __DIR__ . 
'/includes/Query/ContentModelFeature.php',
'CirrusSearch\\Query\\FileNumericFeature' => __DIR__ . 
'/includes/Query/FileNumericFeature.php',
'CirrusSearch\\Query\\FileTypeFeature' => __DIR__ . 
'/includes/Query/FileTypeFeature.php',
diff --git a/includes/CompletionSuggester.php b/includes/CompletionSuggester.php
index 27317c4..e9cc993 100644
--- a/includes/CompletionSuggester.php
+++ b/includes/CompletionSuggester.php
@@ -2,16 +2,14 @@
 
 namespace CirrusSearch;
 
-use CirrusSearch;
-use Elastica\Request;
-use CirrusSearch\BuildDocument\Completion\SuggestBuilder;
+use CirrusSearch\Query\CompSuggestQueryBuilder;
+use Elastica\Exception\ExceptionInterface;
+use Elastica\Index;
+use Elastica\Query;
 use CirrusSearch\Search\SearchContext;
 use MediaWiki\MediaWikiServices;
-use SearchSuggestion;
 use SearchSuggestionSet;
 use Status;
-use ApiUsageException;
-use UsageException;
 use User;
 
 /**
@@ -57,49 +55,41 @@
  * in suggest profiles to fetch more than what the use asked.
  */
 class CompletionSuggester extends ElasticsearchIntermediary {
-   const VARIANT_EXTRA_DISCOUNT = 0.0001;
/**
-* @var string term to search.
-*/
-   private $term;
-
-   /**
-* @var string[]|null search variants
-*/
-   private $variants;
-
-   /**
-* @var integer maximum number of result
+* @var integer maximum number of result (final)
 */
private $limit;
 
/**
-* @var integer offset
+* @var integer offset (final)
 */
private $offset;
 
/**
-* @var string index base name to use
+* @var string index base name to use (final)
 */
private $indexBaseName;
 
/**
-* Search environment configuration
+* @var Index (final)
+*/
+   private $completionIndex;
+
+   /**
+* Search environment configuration (final)
 * @var SearchConfig
 */
private $config;
 
/**
-* @var string Query type (comp_suggest_geo or comp_suggest)
-*/
-   public $queryType;
-
-   /**
-* @var SearchContext
+* @var SearchContext (final)
 */
private $searchContext;
 
-   private $settings;
+   /**
+* @var CompSuggestQueryBuilder $compSuggestBuilder (final)
+*/
+   private $compSuggestBuilder;
 
/**
 * @param Connection $conn
@@ -126,36 +116,19 @@
$this->limit = $limit;
$this->offset = $offset;
$this->indexBaseName = $index ?: $config->get( 
SearchConfig::INDEX_BASE_NAME );
+   $this->completionIndex = $this->connection->getIndex( 
$this->indexBaseName,
+   Connection::TITLE_SUGGEST_TYPE );
$this->searchContext = new SearchContext( $this->config, 
$namespaces );
 
if ( $profileName == null ) {
$profileName = $this->config->get( 
'CirrusSearchCompletionSettings' );
}
-   $this->settings = $this->config->getElement( 
'CirrusSearchCompletionProfiles', $profileName );
-   }
-
-   /**
-* @param string $search
-* @throws ApiUsageException
-* @throws UsageException
-*/
-   private function checkRequestLength( $search ) {
-   $requestLength = mb_strlen( $search );
-   if ( $requestLength > CirrusSearch::MAX_TITLE_SEARCH ) {
-   if ( class_exists