Smalyshev has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/381068 )

Change subject: [WIP] Index descriptions for Wikibase
......................................................................

[WIP] Index descriptions for Wikibase

Bug: T176903
Change-Id: Ie304527c41c364e0bdb536cb04cb066fff6c6d7b
---
M repo/includes/Search/Elastic/Fields/DescriptionsField.php
M repo/includes/Search/Elastic/Fields/LabelsField.php
2 files changed, 32 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/68/381068/1

diff --git a/repo/includes/Search/Elastic/Fields/DescriptionsField.php 
b/repo/includes/Search/Elastic/Fields/DescriptionsField.php
index 59bf1c4..66a4651 100644
--- a/repo/includes/Search/Elastic/Fields/DescriptionsField.php
+++ b/repo/includes/Search/Elastic/Fields/DescriptionsField.php
@@ -1,6 +1,7 @@
 <?php
 namespace Wikibase\Repo\Search\Elastic\Fields;
 
+use CirrusSearch;
 use SearchEngine;
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Term\DescriptionsProvider;
@@ -8,7 +9,7 @@
 /**
  * Field which contains per-language specific descriptions.
  */
-class DescriptionsField implements WikibaseIndexField {
+class DescriptionsField extends TermIndexField {
 
        /**
         * List of available languages
@@ -21,17 +22,37 @@
         */
        public function __construct( array $languages ) {
                $this->languages = $languages;
+               parent::__construct( "", \SearchIndexField::INDEX_TYPE_NESTED );
        }
 
        /**
         * @param SearchEngine $engine
-        * @param string $name
-        * @return null|\SearchIndexField
+        * @return null|array
         */
-       public function getMappingField( SearchEngine $engine, $name ) {
-               // TODO: no mapping for now, since we're only storing it for 
retrieval
-               // When we start indexing it, we'll need to figure out how to 
add proper analyzers
-               return null;
+       public function getMapping( SearchEngine $engine ) {
+               // Since we need a specially tuned field, we can not use
+               // standard search engine types.
+               if ( !( $engine instanceof CirrusSearch ) ) {
+                       // For now only Cirrus/Elastic is supported
+                       return [];
+               }
+
+               $config = [
+                       'type' => 'object',
+                       'properties' => []
+               ];
+               foreach ( $this->languages as $language ) {
+                       $langConfig = $this->getUnindexedField();
+
+                       // FIXME: now this config copies labels, but should 
have proper analyzer handling
+                       $langConfig['fields']['near_match_folded'] =
+                               $this->getSubfield( 'near_match_asciifolding' );
+                       $langConfig['fields']['near_match'] = 
$this->getSubfield( 'near_match' );
+                       // TODO: should we also have *_all field? Or add 
descriptions to "all"?
+                       $config['properties'][$language] = $langConfig;
+               }
+
+               return $config;
        }
 
        /**
diff --git a/repo/includes/Search/Elastic/Fields/LabelsField.php 
b/repo/includes/Search/Elastic/Fields/LabelsField.php
index d2f84b3..175679b 100644
--- a/repo/includes/Search/Elastic/Fields/LabelsField.php
+++ b/repo/includes/Search/Elastic/Fields/LabelsField.php
@@ -18,6 +18,10 @@
         */
        private $languages;
 
+       /**
+        * LabelsField constructor.
+        * @param string[] $languages
+        */
        public function __construct( $languages ) {
                $this->languages = $languages;
                parent::__construct( "", \SearchIndexField::INDEX_TYPE_NESTED );

-- 
To view, visit https://gerrit.wikimedia.org/r/381068
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie304527c41c364e0bdb536cb04cb066fff6c6d7b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <smalys...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to