Aude has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/269633

Change subject: Add label search field for Elastic [WIP]
......................................................................

Add label search field for Elastic [WIP]

Change-Id: Ie1b28315a4285014ca324e01df3fd0a0da43fa72
---
A repo/includes/Search/Elastic/Fields/LabelField.php
1 file changed, 87 insertions(+), 0 deletions(-)


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

diff --git a/repo/includes/Search/Elastic/Fields/LabelField.php 
b/repo/includes/Search/Elastic/Fields/LabelField.php
new file mode 100644
index 0000000..043aef8
--- /dev/null
+++ b/repo/includes/Search/Elastic/Fields/LabelField.php
@@ -0,0 +1,87 @@
+<?php
+
+namespace Wikibase\Repo\Search\Elastic\Fields;
+
+use Wikibase\DataModel\Entity\EntityDocument;
+
+/**
+ * @since 0.5
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < aude.w...@gmail.com >
+ */
+class LabelField implements SearchIndexField {
+
+       /**
+        * @var string[]
+        */
+       private $languageCodes;
+
+       /**
+        * @param string[] $languageCodes
+        */
+       public function __construct( array $languageCodes ) {
+               $this->languageCodes = $languageCodes;
+       }
+
+       /**
+        * @return array
+        */
+       public function getMapping() {
+               return array(
+                       'type' => 'nested',
+                       'properties' => $this->getTermFieldProperties()
+               );
+       }
+
+       /**
+        * @param EntityDocument $entity
+        *
+        * @return array
+        */
+       public function getFieldData( EntityDocument $entity ) {
+               $terms = $entity->getFingerprint();
+
+               return $this->buildTermsData( $terms->getLabels() );
+       }
+
+       /**
+        * @return string
+        */
+       protected function getPrefix() {
+               return 'label';
+       }
+
+       /**
+        * @return array
+        */
+       protected function getTermFieldProperties() {
+               $prefix = $this->getPrefix();
+               $fields = array();
+
+               foreach ( $this->languageCodes as $languageCode ) {
+                       $fields[$prefix . '_' . $languageCode] = array(
+                               'type' => 'string'
+                       );
+               }
+
+               return $fields;
+       }
+
+       /**
+        * @param TermList $terms
+        *
+        * @return array
+        */
+       protected function buildTermsData( TermList $terms ) {
+               $prefix = $this->getPrefix();
+               $termsArray = array();
+
+               foreach ( $terms->toTextArray() as $languageCode => $term ) {
+                       $termsArray[$prefix . '_' . $languageCode] = $term;
+               }
+
+               return $termsArray;
+       }
+
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie1b28315a4285014ca324e01df3fd0a0da43fa72
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aude <aude.w...@gmail.com>

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

Reply via email to