Phoenix303 has uploaded a new change for review.

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

Change subject: Customize facets for translated and untranslated filters.
......................................................................

Customize facets for translated and untranslated filters.

Use "filter=translated" to get facets for translated messages
and "filter=untranslated" to get facets for untranslated messages.

Bug: T101220
Change-Id: I6a162871e0b669162d95a44727cce7ed7c6f36a9
---
M specials/SpecialSearchTranslations.php
M ttmserver/ElasticSearchTTMServer.php
2 files changed, 58 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/77/225277/1

diff --git a/specials/SpecialSearchTranslations.php 
b/specials/SpecialSearchTranslations.php
index 17c880e..88650bd 100644
--- a/specials/SpecialSearchTranslations.php
+++ b/specials/SpecialSearchTranslations.php
@@ -88,6 +88,12 @@
                }
 
                // Part 1: facets
+               if ( method_exists( $server, 'makeFacets' )
+                       && ( $opts->getValue( 'filter' ) === 'translated' || 
$opts->getValue( 'filter' ) === 'untranslated' )
+               ) {
+                       $resultset = $server->makeFacets( $terms, $opts );
+               }
+
                $facets = $server->getFacets( $resultset );
                $total = $server->getTotalHits( $resultset );
                $facetHtml = '';
diff --git a/ttmserver/ElasticSearchTTMServer.php 
b/ttmserver/ElasticSearchTTMServer.php
index c0dbb55..b214c08 100644
--- a/ttmserver/ElasticSearchTTMServer.php
+++ b/ttmserver/ElasticSearchTTMServer.php
@@ -533,6 +533,58 @@
                }
        }
 
+       // Fetch data for facets counts
+       public function makeFacets( $terms, $opts ) {
+
+               $filteredQuery = new \Elastica\Query\Filtered();
+               $idQuery = new \Elastica\Filter\Terms();
+               $idQuery->setTerms( 'localid', $terms );
+
+               $filteredQuery->setFilter($idQuery);
+               $query = new \Elastica\Query();
+
+               $query->setQuery( $filteredQuery );
+
+               // Language facet to retrieve count for each language
+               $language = new \Elastica\Facet\Terms( 'language' );
+               $language->setField( 'language' );
+               $language->setSize( 600 );
+               $query->addFacet( $language );
+
+               // Group facet to retrieve count for each group
+               $group = new \Elastica\Facet\Terms( 'group' );
+               $group->setField( 'group' );
+               $group->setSize( 500 );
+               $query->addFacet( $group );
+
+               $filters = new \Elastica\Filter\Bool();
+
+               $language = $opts->getValue( 'language' );
+               $languageFilter = new \Elastica\Filter\Term();
+               $languageFilter->setTerm( 'language', $language );
+               $filters->addMust( $languageFilter );
+
+               $group = $opts->getValue( 'group' );
+               if ( $group !== '' ) {
+                       $groupFilter = new \Elastica\Filter\Term();
+                       $groupFilter->setTerm( 'group', $group );
+                       $filters->addMust( $groupFilter );
+               }
+               $query->setFilter( $filters );
+
+               $offset = $opts->getValue( 'offset' );
+               $limit = $opts->getValue( 'limit' );
+               $query->setFrom( $offset );
+               $query->setSize( $limit );
+               $query->setParam( '_source', array( 'content', 'localid', 
'language', 'group', 'wiki' ) );
+
+               try {
+                       return $this->getType()->getIndex()->search( $query );
+               } catch ( \Elastica\Exception\ExceptionInterface $e ) {
+                       throw new TTMServerException( $e->getMessage() );
+               }
+       }
+
        public function getFacets( $resultset ) {
                $facets = $resultset->getFacets();
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6a162871e0b669162d95a44727cce7ed7c6f36a9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Phoenix303 <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to