Mediawiki extensions: sphinxsearch

From wikinotes

WARNING:

The sphinxsearch mediawiki extension requires a version of sphinxsearch that is no longer maintained.
The unsupported sphinxsearch could no longer be built with packages for a modern OS.

I have moved to mediawiki extensions: cirrussearch - it is the new standard for all wikimedia sites.

Updates/Troubleshooting

If updating, to start clean:

service sphinxsearch stop
ps -aux | grep -i searchd    # check if sphinxsearch is stopped

rm /var/db/sphinxsearch/data/wiki_*
rm /var/log/sphinxsearch/*

When troubleshooting a sphinxsearch process that has not started (check for searchd,

check the logs in

/var/db/sphinxsearch/*.log


Install SphinxSearch Extension

curl -O# https://github.com/wikimedia/mediawiki-extensions-SphinxSearch/archive/master.tar.gz -o /usr/local/www/mediawiki/extensions
tar -xvf /usr/local/www/mediawiki/extensions/master.tar.gz

mv /usr/local/www/mediawiki/extensions/mediawiki-extensions-SphinxSearch-master \
   /usr/local/www/mediawiki/extensions/SphinxSearch

chown -R www:www /usr/local/www/mediawiki/extensions/SphinxSearch


Install/Configure SphinxSearch

pkg install sphinxsearch

cp /usr/local/www/mediawiki/extensions/SphinxSearch/sphinx.conf /usr/local/etc/sphinx.conf

mkdir -p /var/data
chown -R _sphinx:_sphinx  /var/data
chmod 775                 /var/data


Configure SphinxSearch Extension

/usr/local/etc/sphinx.conf

source_wiki_main {
    sql_db = wikidb
    sql_user = wiki
    sql_pass = <password>
    # defaults...
}

index wiki_main {
    path = /var/db/sphinxsearch/data/wiki_main
    # defaults...
}

index wiki_incremental {
    path = /var/db/sphinxsearch/data/wiki_incremental
}

searchd {
    log       = /var/log/sphinxsearch/searchd.log
    query_log = /var/log/sphinxsearch/query.log
    pid_file  = /var/log/sphinxsearch/searchd.pid
    
}


Create initial index of Wiki:

/usr/local/bin/indexer --config /usr/local/etc/sphinx.conf  --all


Copy sphinxapi.php from sphinxsearch installation

cp /usr/local/share/examples/sphinxsearch/api/sphinxapi.php /usr/local/www/mediawiki/extensions/SphinxSearch/


Setup Crontab to periodically run indexer

PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin
## minute hour mday month wday command ##
0 3 * * * /usr/local/bin/indexer --config /usr/local/etc/sphinx.conf wiki_main        --rotate
*/30 * * * * /usr/local/bin/indexer --config /usr/local/etc/sphinx.conf wiki_incremental --rotate


Enable SpinxSearch Extension in Mediawiki

/usr/local/www/mediawiki/LocalSettings.php

require_once "$IP/extensions/SphinxSearch/SphinxSearch.php";
$wgSearchType               = 'SphinxMWSearch';
$wgEnableSphinxPrefixSearch = true;
$wgSphinxSearch_matches     = 20;