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