Mediawiki extensions: cirrussearch

From wikinotes

CirrusSearch is an extension that enables full text search, and previews within your wiki.
CirrusSearch has replaced Lucene/Sphinx for all official wikimedia wikis (~2020).

Documentation

extension docs https://www.mediawiki.org/wiki/Extension:CirrusSearch
usage docs https://www.mediawiki.org/wiki/Help:CirrusSearch#How_frequently_is_the_search_index_updated?
install/bootstrap docs /usr/local/www/mediawiki/extensions/CirrusSearch/README

Install

Install Requirements


pkg install \
  php74-composer \
  php74-curl \
  elasticsearch6

Install Elastica Extension


Visit https://www.mediawiki.org/wiki/Extension:Elastica and download elastica for your mediawiki version.
Extract it to /usr/local/www/mediawiki/extensions/Elastica.

fetch https://extdist.wmflabs.org/dist/extensions/Elastica-REL1_34-b33d985.tar.gz
tar -xvf Elastica-REL1_34-b33d985.tar.gz -C /usr/local/etc/www/mediawiki/extensions
find /usr/local/etc/www/mediawiki/extensions -exec chown www:www {} \;


Run composer install for elastica

cd /usr/local/www/mediawiki/extensions/Elastica
composer install --no-dev


Install CirrusSearch Extension


Visit https://www.mediawiki.org/wiki/Extension:CirrusSearch and download cirrussearch for your mediawiki version.
Extract it to /usr/local/www/mediawiki/extensions/Cirrussearch.

fetch https://extdist.wmflabs.org/dist/extensions/CirrusSearch-REL1_34-a86e0a5.tar.gz
tar -xvf CirrusSearch-REL1_34-a86e0a5.tar.gz  -C /usr/local/etc/www/mediawiki/extensions
find /usr/local/etc/www/mediawiki/extensions -exec chown www:www {} \;

Enable plugins within mediawiki

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

wfLoadExtension('Elastica');
wfLoadExtension('CirrusSearch');
$wgSearchType = "CirrusSearch";

Enable ElasticSearch service


# /etc/rc.conf

elasticsearch_enable="YES"

Bootstrap Indexing (Reqd for new wikis, and Restoring old wikis)


Disable SearchUpdate

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

# disable searchupdate
$wgDisableSearchUpdate = true;

# configure elasticsearch nodes (just localhost for me!)
$wgCirrusSearchServers = ['localhost'];


Generate ElasticSearch index

cd /usr/local/www/mediawiki/extensions/CirrusSearch
php maintenance/updateSearchIndexConfig.php

Now Re-Enable SearchUpdate

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

# $wgDisableSearchUpdate = true;

Finally, Bootstrap the search index

cd /usr/local/www/mediawiki/extensions/CirrusSearch
php maintenance/forceSearchIndex.php --skipLinks --indexOnSkip
php maintenance/forceSearchIndex.php --skipParse

From now on, whenever you edit a page, the index is updated automatically.