summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'MLEB/Translate/ttmserver/SolrTTMServer.php')
-rw-r--r--MLEB/Translate/ttmserver/SolrTTMServer.php80
1 files changed, 47 insertions, 33 deletions
diff --git a/MLEB/Translate/ttmserver/SolrTTMServer.php b/MLEB/Translate/ttmserver/SolrTTMServer.php
index b81aaf2e..bb6c244c 100644
--- a/MLEB/Translate/ttmserver/SolrTTMServer.php
+++ b/MLEB/Translate/ttmserver/SolrTTMServer.php
@@ -5,7 +5,7 @@
* @file
* @author Niklas Laxström
* @copyright Copyright © 2012-2013, Niklas Laxström
- * @license GPL-2.0+
+ * @license GPL-2.0-or-later
* @ingroup TTMServer
*/
@@ -13,6 +13,7 @@
* TTMServer backed based on Solr instance. Depends on Solarium.
* @since 2012-06-27
* @ingroup TTMServer
+ * @deprecated 1.27. Will be removed in 1.29.
*/
class SolrTTMServer
extends TTMServer
@@ -32,7 +33,10 @@ class SolrTTMServer
protected $logger;
public function __construct( $config ) {
+ wfDeprecated( __METHOD__, '1.24' );
+
parent::__construct( $config );
+
if ( isset( $config['config'] ) ) {
$this->client = new Solarium_Client( $config['config'] );
} else {
@@ -41,7 +45,7 @@ class SolrTTMServer
}
public function isLocalSuggestion( array $suggestion ) {
- return $suggestion['wiki'] === wfWikiId();
+ return $suggestion['wiki'] === wfWikiID();
}
public function expandLocation( array $suggestion ) {
@@ -65,11 +69,11 @@ class SolrTTMServer
// For now impose a length limit on query string to avoid doing
// very slow queries. Magic number.
if ( strlen( $text ) > 789 ) {
- return array();
+ return [];
}
$query = $this->client->createSelect();
- $query->setFields( array( 'globalid', 'content', 'score' ) );
+ $query->setFields( [ 'globalid', 'content', 'score' ] );
/* The interface usually displays three best candidates. These might
* come from more than three matches, if the translation is the same.
@@ -88,12 +92,12 @@ class SolrTTMServer
/* Note how we need to escape twice here, first the string for strdist
* and then the strdist call itself for the query. And of course every-
* thing will be URL encoded once sent over the line. */
- $query->setQuery( '_val_:%P1%', array( $dist ) );
+ $query->setQuery( '_val_:%P1%', [ $dist ] );
/* Filter queries are supposed to be efficient as they are separately
* cached, but I haven't done any benchmarks. */
$query->createFilterQuery( 'lang' )
- ->setQuery( 'language:%P1%', array( $sourceLanguage ) );
+ ->setQuery( 'language:%P1%', [ $sourceLanguage ] );
$resultset = $this->client->select( $query );
@@ -105,7 +109,7 @@ class SolrTTMServer
* This code is a bit uglier than I'd like it to be, since there
* there is no field that globally identifies a message (message
* definition and translations). */
- $contents = $scores = array();
+ $contents = $scores = [];
$queryString = '';
foreach ( $resultset as $doc ) {
$sourceId = preg_replace( '~/[^/]+$~', '', $doc->globalid );
@@ -118,7 +122,7 @@ class SolrTTMServer
// Second query to fetch available translations
$fetchQuery = $this->client->createSelect();
- $fetchQuery->setFields( array( 'wiki', 'uri', 'content', 'messageid', 'globalid' ) );
+ $fetchQuery->setFields( [ 'wiki', 'uri', 'content', 'messageid', 'globalid' ] );
// This come in random order, so have to fetch all and sort
$fetchQuery->setRows( 25 );
$fetchQuery->setQuery( $queryString );
@@ -127,7 +131,7 @@ class SolrTTMServer
$translations = $this->client->select( $fetchQuery );
- $suggestions = array();
+ $suggestions = [];
foreach ( $translations as $doc ) {
/* Construct the matching source id */
$sourceId = preg_replace( '~/[^/]+$~', '', $doc->globalid );
@@ -140,7 +144,7 @@ class SolrTTMServer
continue;
}
- $suggestions[] = array(
+ $suggestions[] = [
'source' => $contents[$sourceId],
'target' => $doc->content,
'context' => $doc->messageid,
@@ -148,7 +152,7 @@ class SolrTTMServer
'wiki' => $doc->wiki,
'location' => $doc->messageid . '/' . $targetLanguage,
'uri' => $doc->uri,
- );
+ ];
}
/* Like mentioned above, we get results in random order. Sort them
@@ -195,11 +199,11 @@ class SolrTTMServer
if ( $doDelete ) {
$base = Title::makeTitle( $title->getNamespace(), $handle->getKey() );
- $conds = array(
- 'wiki' => wfWikiId(),
+ $conds = [
+ 'wiki' => wfWikiID(),
'language' => $handle->getCode(),
'messageid' => $base->getPrefixedText(),
- );
+ ];
foreach ( $conds as $key => &$value ) {
$value = "$key:" . $update->getHelper()->escapePhrase( $value );
}
@@ -214,7 +218,7 @@ class SolrTTMServer
$targetTitle->getNamespace(),
$handle->getKey() . '/' . $sourceLanguage
);
- $revId = intval( $sourceTitle->getLatestRevID() );
+ $revId = (int)$sourceTitle->getLatestRevID();
/* Note: in some cases the source page might not exist, in this case
* we use 0 as message version identifier, to differentiate them from
* orphan messages */
@@ -230,7 +234,7 @@ class SolrTTMServer
try {
$this->client->update( $update );
} catch ( Solarium_Exception $e ) {
- error_log( "SolrTTMServer update-write failed" );
+ error_log( 'SolrTTMServer update-write failed' );
return false;
}
@@ -240,19 +244,23 @@ class SolrTTMServer
/**
* @see schema.xml
+ * @param MessageHandle $handle
+ * @param string $text
+ * @param int $revId
+ * @return Solarium_Document_ReadWrite
*/
protected function createDocument( MessageHandle $handle, $text, $revId ) {
$language = $handle->getCode();
$translationTitle = $handle->getTitle();
$title = Title::makeTitle( $handle->getTitle()->getNamespace(), $handle->getKey() );
- $wiki = wfWikiId();
+ $wiki = wfWikiID();
$messageid = $title->getPrefixedText();
$globalid = "$wiki-$messageid-$revId/$language";
$doc = new Solarium_Document_ReadWrite();
$doc->wiki = $wiki;
- $doc->uri = $translationTitle->getCanonicalUrl();
+ $doc->uri = $translationTitle->getCanonicalURL();
$doc->messageid = $messageid;
$doc->globalid = $globalid;
@@ -265,7 +273,7 @@ class SolrTTMServer
public function beginBootstrap() {
$update = $this->client->createUpdate();
- $query = 'wiki:' . $update->getHelper()->escapePhrase( wfWikiId() );
+ $query = 'wiki:' . $update->getHelper()->escapePhrase( wfWikiID() );
$update->addDeleteQuery( $query );
$update->addCommit();
$this->client->update( $update );
@@ -290,7 +298,7 @@ class SolrTTMServer
foreach ( $batch as $key => $data ) {
list( $handle, $sourceLanguage, $text ) = $data;
$revId = $handle->getTitleForLanguage( $sourceLanguage )->getLatestRevID();
- $doc = $this->createDocument( $handle, $text, $id );
+ $doc = $this->createDocument( $handle, $text, $revId );
// Add document and commit within X seconds.
$update->addDocument( $doc, null, self::COMMIT_WITHIN );
}
@@ -341,7 +349,13 @@ class SolrTTMServer
}
}
- // Search interface
+ /**
+ * Search interface
+ * @param string $queryString
+ * @param array $opts
+ * @param array $highlight
+ * @return array
+ */
public function search( $queryString, $opts, $highlight ) {
$client = $this->getSolarium();
@@ -349,8 +363,8 @@ class SolrTTMServer
$dismax = $query->getDisMax();
$dismax->setQueryParser( 'edismax' );
$query->setQuery( $queryString );
- $query->setRows( $opts->getValue( 'limit' ) );
- $query->setStart( $opts->getValue( 'offset' ) );
+ $query->setRows( $opts['limit'] );
+ $query->setStart( $opts['offset'] );
list( $pre, $post ) = $highlight;
$hl = $query->getHighlighting();
@@ -361,17 +375,17 @@ class SolrTTMServer
$hl->setFragSize( '5000' );
$hl->setSnippets( 1 );
- $languageFilter = $opts->getValue( 'language' );
+ $languageFilter = $opts['language'];
if ( $languageFilter !== '' ) {
$query->createFilterQuery( 'languageFilter' )
- ->setQuery( 'language:%P1%', array( $languageFilter ) )
+ ->setQuery( 'language:%P1%', [ $languageFilter ] )
->addTag( 'filter' );
}
- $groupFilter = $opts->getValue( 'group' );
+ $groupFilter = $opts['group'];
if ( $groupFilter !== '' ) {
$query->createFilterQuery( 'groupFilter' )
- ->setQuery( 'group:%P1%', array( $groupFilter ) )
+ ->setQuery( 'group:%P1%', [ $groupFilter ] )
->addTag( 'filter' );
}
@@ -379,12 +393,12 @@ class SolrTTMServer
$language = $facetSet->createFacetField( 'language' );
$language->setField( 'language' );
- $language->setMincount( 1 );
+ $language->setMinCount( 1 );
$language->addExclude( 'filter' );
$group = $facetSet->createFacetField( 'group' );
$group->setField( 'group' );
- $group->setMincount( 1 );
+ $group->setMinCount( 1 );
$group->setMissing( true );
$group->addExclude( 'filter' );
@@ -396,10 +410,10 @@ class SolrTTMServer
}
public function getFacets( $resultset ) {
- return array(
+ return [
'language' => iterator_to_array( $resultset->getFacetSet()->getFacet( 'language' ) ),
'group' => iterator_to_array( $resultset->getFacetSet()->getFacet( 'group' ) ),
- );
+ ];
}
public function getTotalHits( $resultset ) {
@@ -408,7 +422,7 @@ class SolrTTMServer
public function getDocuments( $resultset ) {
$highlighting = $resultset->getHighlighting();
- $ret = array();
+ $ret = [];
foreach ( $resultset as $document ) {
$fields = iterator_to_array( $document );
// Compatibility mapping
@@ -416,7 +430,7 @@ class SolrTTMServer
$hdoc = $highlighting->getResult( $document->globalid );
$text = $hdoc->getField( 'text' );
- if ( $text === array() ) {
+ if ( $text === [] ) {
$text = $document->text;
} else {
$text = $text[0];