jenkins-bot has submitted this change and it was merged.
Change subject: Handle the case when tm query phase1 returns zero results
......................................................................
Handle the case when tm query phase1 returns zero results
* Fixes: Undefined variable: score
* Avoids stupid empty phase2 query
Can be refactored later in separate methods for clarity
Change-Id: Ide323b05cab9371b6e70bd8c65850f05f29b8573
---
M ttmserver/ElasticSearchTTMServer.php
1 file changed, 38 insertions(+), 28 deletions(-)
Approvals:
Chad: Looks good to me, approved
jenkins-bot: Verified
diff --git a/ttmserver/ElasticSearchTTMServer.php
b/ttmserver/ElasticSearchTTMServer.php
index 6d0bc2b..c888663 100644
--- a/ttmserver/ElasticSearchTTMServer.php
+++ b/ttmserver/ElasticSearchTTMServer.php
@@ -109,6 +109,11 @@
$contents = $scores = $terms = array();
do {
$resultset = $this->getType()->search( $query );
+
+ if ( count( $resultset ) === 0 ) {
+ break;
+ }
+
foreach ( $resultset->getResults() as $result ) {
$data = $result->getData();
$score = $result->getScore();
@@ -142,40 +147,45 @@
// Break if we already got all hits
} while ( $resultset->getTotalHits() > count( $contents ) );
- $idQuery = new \Elastica\Query\Terms();
- $idQuery->setTerms( '_id', $terms );
-
- $query = new \Elastica\Query( $idQuery );
- $query->setSize( 25 );
- $query->setParam( '_source', array( 'wiki', 'uri', 'content',
'localid' ) );
- $resultset = $this->getType()->search( $query );
-
$suggestions = array();
- foreach ( $resultset->getResults() as $result ) {
- $data = $result->getData();
- // Construct the matching source id
- $sourceId = preg_replace( '~/[^/]+$~', '',
$result->getId() );
+ // Skip second query if first query found nothing. Keeping only
one return
+ // statement in this method to avoid forgetting to reset
connection timeout
+ if ( $terms !== array() ) {
+ $idQuery = new \Elastica\Query\Terms();
+ $idQuery->setTerms( '_id', $terms );
- $suggestions[] = array(
- 'source' => $contents[$sourceId],
- 'target' => $data['content'],
- 'context' => $data['localid'],
- 'quality' => $scores[$sourceId],
- 'wiki' => $data['wiki'],
- 'location' => $data['localid'] . '/' .
$targetLanguage,
- 'uri' => $data['uri'],
- );
- }
+ $query = new \Elastica\Query( $idQuery );
+ $query->setSize( 25 );
+ $query->setParam( '_source', array( 'wiki', 'uri',
'content', 'localid' ) );
+ $resultset = $this->getType()->search( $query );
- // Ensure reults are in quality order
- uasort( $suggestions, function ( $a, $b ) {
- if ( $a['quality'] === $b['quality'] ) {
- return 0;
+ foreach ( $resultset->getResults() as $result ) {
+ $data = $result->getData();
+
+ // Construct the matching source id
+ $sourceId = preg_replace( '~/[^/]+$~', '',
$result->getId() );
+
+ $suggestions[] = array(
+ 'source' => $contents[$sourceId],
+ 'target' => $data['content'],
+ 'context' => $data['localid'],
+ 'quality' => $scores[$sourceId],
+ 'wiki' => $data['wiki'],
+ 'location' => $data['localid'] . '/' .
$targetLanguage,
+ 'uri' => $data['uri'],
+ );
}
- return ( $a['quality'] < $b['quality'] ) ? 1 : -1;
- } );
+ // Ensure reults are in quality order
+ uasort( $suggestions, function ( $a, $b ) {
+ if ( $a['quality'] === $b['quality'] ) {
+ return 0;
+ }
+
+ return ( $a['quality'] < $b['quality'] ) ? 1 :
-1;
+ } );
+ }
$connection->setTimeout( $oldTimeout );
--
To view, visit https://gerrit.wikimedia.org/r/178463
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ide323b05cab9371b6e70bd8c65850f05f29b8573
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>
Gerrit-Reviewer: Chad <[email protected]>
Gerrit-Reviewer: Manybubbles <[email protected]>
Gerrit-Reviewer: Santhosh <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits