Topic on Project:Support desk

SphinxSearch throws an error in MediaWiki Version 1.34.0

2
Ablum010777 (talkcontribs)

I'm sorry, I just pasted this in in a hurry because our bureau closes at 16:30 on Fridays. So I try again now:


I have upgraded my wiki to Version 1.34.0, including the extensions. Now the phenomenon is, that when I make use of the SphinxSearch extension, instead of search results it comes up with this error message:

[895083e3cfe4edcfab999700] /testwiki/index.php?search=Celia&title=Spezial%3ASuche&go=Seite ArgumentCountError from line 28 of /srv/www/htdocs/testwiki/extensions/SphinxSearch/SphinxMWSearchResult.php: Too few arguments to function SphinxMWSearchResult::getTextSnippet(), 0 passed in /srv/www/htdocs/testwiki/includes/widget/search/FullSearchResultWidget.php on line 65 and exactly 1 expected

Backtrace:

#0 /srv/www/htdocs/testwiki/includes/widget/search/FullSearchResultWidget.php(65): SphinxMWSearchResult->getTextSnippet()

#1 /srv/www/htdocs/testwiki/includes/widget/search/BasicSearchResultSetWidget.php(122): MediaWiki\Widget\Search\FullSearchResultWidget->render(SphinxMWSearchResult, integer)

#2 /srv/www/htdocs/testwiki/includes/widget/search/BasicSearchResultSetWidget.php(70): MediaWiki\Widget\Search\BasicSearchResultSetWidget->renderResultSet(SphinxMWSearchResultSet, integer)

#3 /srv/www/htdocs/testwiki/includes/specials/SpecialSearch.php(462): MediaWiki\Widget\Search\BasicSearchResultSetWidget->render(string, integer, SphinxMWSearchResultSet, SphinxMWSearchResultSet)

#4 /srv/www/htdocs/testwiki/includes/specials/SpecialSearch.php(179): SpecialSearch->showResults(string)

#5 /srv/www/htdocs/testwiki/includes/specialpage/SpecialPage.php(575): SpecialSearch->execute(NULL)

#6 /srv/www/htdocs/testwiki/includes/specialpage/SpecialPageFactory.php(611): SpecialPage->run(NULL)

#7 /srv/www/htdocs/testwiki/includes/MediaWiki.php(296): MediaWiki\Special\SpecialPageFactory->executePath(Title, RequestContext)

#8 /srv/www/htdocs/testwiki/includes/MediaWiki.php(900): MediaWiki->performRequest()

#9 /srv/www/htdocs/testwiki/includes/MediaWiki.php(527): MediaWiki->main()

#10 /srv/www/htdocs/testwiki/index.php(44): MediaWiki->run()

#11 {main}


To elaborate on the problem, this is what I have in the LocalSettings.php:

#wfLoadExtension( 'SphinxSearch' );

$wgSearchType = 'SphinxMWSearch';

wfLoadExtension( 'SphinxSearch' );

#require_once( "$IP/extensions/SphinxSearch/SphinxSearch_testwiki.php" );

#wfLoadExtension( 'SphinxSearch_testwiki' );

# Host and port on which searchd deamon is tunning

#$wgSphinxSearch_index = "my_testwiki_main";

#$wgSphinxSearch_index_list = "my_testwiki_main,my_testwiki_incremental";

$wgFooterIcons['poweredby']['sphinxsearch'] = array(

       'src' => "$wgScriptPath/extensions/SphinxSearch/Powered_by_sphinx.png",

       'url' => 'http://www.mediawiki.org/wiki/Extension:SphinxSearch',

       'alt' => 'Search Powered by Sphinx',

);


And the extension.json looks like this:

{

       "name": "SphinxSearch",

       "author": "Svemir Brkic, Paul Grinberg",

       "url": "https://www.mediawiki.org/wiki/Extension:SphinxSearch",

       "descriptionmsg": "sphinxsearch-desc",

       "license-name": "GPL-2.0",

       "type": "other",

       "version": "1.0.0",

       "AutoloadClasses": {

               "SphinxMWSearch": "SphinxMWSearch.php",

               "SphinxMWSearchResult": "SphinxMWSearchResult.php",

               "SphinxMWSearchResultSet": "SphinxMWSearchResultSet.php"

       },

       "ExtensionFunctions": [

               "SphinxMWSearch::initialize"

       ],

       "MessagesDirs": {

               "SphinxSearch": [

                       "i18n"

               ]

       },

       "config": {

               "SphinxSearch_host": "127.0.0.1",

               "SphinxSearch_port": 9312,

               "SphinxSearch_index": ",my_testwiki_main",

               "SphinxSearch_index_list": "my_testwiki_main,my_testwiki_incremental",

               "SphinxSearch_index_weights": "null",

               "SphinxSearch_mode": 4,

               "SphinxSearch_sortmode": 0,

               "SphinxSearch_sortby": "",

               "SphinxSearch_maxmatches": 1000,

               "SphinxSearch_cutoff": 0,

               "SphinxSearch_weights": {

                       "old_text": 1,

                       "page_title": 100

               },

               "SphinxSearchMWHighlighter": true,

               "SphinxSuggestMode": "",

               "SphinxSearchAspellPath": "aspell",

               "SphinxSearchPersonalDictionary": "",

               "EnableSphinxInfixSearch": false,

               "EnableSphinxPrefixSearch": true

       },

       "manifest_version": 1

}


So I activated the PHP error message display, and it shows me this error message:

Warning: Declaration of SphinxMWSearchResult::getTextSnippet($terms) should be compatible with RevisionSearchResult::getTextSnippet($terms = Array) in /srv/www/htdocs/testwiki/extensions/SphinxSearch/SphinxMWSearchResult.php on line 14


So I took a look at both functions. The one in SphinxMWSearchResult.php looks like this:

       public function getTextSnippet( $terms ) {

               global $wgAdvancedSearchHighlighting, $wgSphinxSearchMWHighlighter, $wgSphinxSearch_index;

               $this->initText();

               $contextlines = 2;

               $contextchars = 75;

               if ( $wgSphinxSearchMWHighlighter ) {

                       $h = new SearchHighlighter();

                       if ( $wgAdvancedSearchHighlighting ) {

                               return $h->highlightText( $this->mText, $terms, $contextlines, $contextchars );

                       } else {

                               return $h->highlightSimple( $this->mText, $terms, $contextlines, $contextchars );

                       }

               }

               $excerpts_opt = [

                       "before_match" => "(searchmatch)",

                       "after_match" => "(/searchmatch)",

                       "chunk_separator" => " ... ",

                       "limit" => $contextlines * $contextchars,

                       "around" => $contextchars,

               ];

               $excerpts = $this->sphinx_client->BuildExcerpts(

                       [ $this->mText ],

                       $wgSphinxSearch_index,

                       implode( ' ', $terms ),

                       $excerpts_opt

               );

               if ( is_array( $excerpts ) ) {

                       $ret = '';

                       foreach ( $excerpts as $entry ) {

                               // remove some wiki markup

                               $entry = preg_replace(

                                       '/([\[\]\{\}\*\#\|\!]+|==+|<br ?\/?>)/',

                                       ' ',

                                       $entry

                               );

                               $entry = str_replace(

                                       [ "<", ">" ],

                                       [ "&lt;", "&gt;" ],

                                       $entry

                               );

                               $entry = str_replace(

                                       [ "(searchmatch)", "(/searchmatch)" ],

                                       [ "<span class='searchmatch'>", "</span>" ],

                                       $entry

                               );

                               $ret .= "<div style='margin: 0.2em 1em 0.2em 1em;'>$entry</div>\n";

                       }

               } else {

                       $ret = wfMessage( 'internalerror_info', $this->sphinx_client->GetLastError() );

               }

               return $ret;

       }

}


compared to the one in RevisionSearchResultTrait.php:

public function getTextSnippet( $terms = [] ) {

               return '';

       }


So what do I do about it?

Malyacko (talkcontribs)
Reply to "SphinxSearch throws an error in MediaWiki Version 1.34.0"