mediawikiの検索を改善する

スポンサーリンク

mediawikiの検索精度が悪く目的のものに辿り着かない。
Elasticsearchを使ったExtension:CirrusSearchという拡張があるようなので導入してみる。

インストール

環境

[code lang=bash]
cat /etc/issue.net
Ubuntu 14.04.2 LTS

uname -a
Linux ws2 3.13.0-46-generic #79-Ubuntu SMP Tue Mar 10 20:06:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[/code]

php-curlがインストールされてない場合

[code lang=bash]
sudo apt-get install php5-curl
[/code]

add-apt-repositoryがインストールされてない場合

[code lang=bash]
sudo apt-get install -y software-properties-common
[/code]

Oracle Javaインストール
ここ見るとJava 8 update 20 or later, or Java 7 update 55 or lateとの事なのでjava8を入れる

[code lang=bash]
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install -y oracle-java8-installer
java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
[/code]

Elasticsearchインストール
ここを参照

[code lang=bash]
wget -qO – https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –
echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo update-rc.d elasticsearch defaults 95 10
[/code]

Elasticsearch起動確認

[code lang=bash]
sudo /etc/init.d/elasticsearch start
* Starting Elasticsearch Server

ps -Cjava ufww
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
elastic+ 5612 35.7 12.3 4053440 253992 ? Sl 19:20 0:10 /usr/lib/jvm/java-8-oracle//bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Delasticsearch -Des.pidfile=/var/run/elasticsearch/elasticsearch.pid -Des.path.home=/usr/share/elasticsearch -cp :/usr/share/elasticsearch/lib/elasticsearch-1.7.1.jar:/usr/share/elasticsearch/lib/*:/usr/share/elasticsearch/lib/sigar/* -Des.default.config=/etc/elasticsearch/elasticsearch.yml -Des.default.path.home=/usr/share/elasticsearch -Des.default.path.logs=/var/log/elasticsearch -Des.default.path.data=/var/lib/elasticsearch -Des.default.path.work=/tmp/elasticsearch -Des.default.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.Elasticsearch
[/code]

mediawiki設定

参照

mediawikiを最新にしておく(v1.25)
参照

Extension:Elasticaを入れる

[code lang=bash]
cd /path/to/mediawiki
git submodule add https://git.wikimedia.org/git/mediawiki/extensions/Elastica.git extensions/Elastica
[/code]

Extension:CirrusSearchの設定

[code lang=bash]
git submodule add https://git.wikimedia.org/git/mediawiki/extensions/CirrusSearch.git extensions/CirrusSearch
[/code]

composerで依存パッケージを入れる
これとかが必要らしい
mediawiki projectにcomposer.pharがある場合

[code lang=bash]
cd extensions/Elastica
php ../../composer.phar update
[/code]

LocalSettings.php編集

[code lang=bash]
cat <> LocalSettings.php

require_once "$IP/extensions/Elastica/Elastica.php";
require_once "$IP/extensions/CirrusSearch/CirrusSearch.php";
$wgDisableSearchUpdate = true;
$wgCirrusSearchServers = array( 'localhost' );
EOF
[/code]

/特別:バージョン情報で確認
スクリーンショット 2015-08-11 19.28.52

index生成

[code lang=bash]
php extensions/CirrusSearch/maintenance/updateSearchIndexConfig.php
[/code]

LocalSettings.phpから$wgDisableSearchUpdate = true;を削除する

準備
一回目php extensions/CirrusSearch/maintenance/forceSearchIndex.php --skipLinks --indexOnSkipが失敗するがもう一度実行すると通る(要確認)

[code lang=bash]
php extensions/CirrusSearch/maintenance/forceSearchIndex.php –skipLinks –indexOnSkip
php extensions/CirrusSearch/maintenance/forceSearchIndex.php –skipParse
[/code]

LocalSettings.php編集

[code lang=bash]
cat <> LocalSettings.php
$wgSearchType = 'CirrusSearch';
EOF
[/code]

動作確認

DEBUG LOG出力をenable

[code lang=php]
$wgDebugLogFile = "/var/tmp/mw.log";
[/code]

ログ

[code lang=log]
[CirrusSearchRequests] full_text search for 'aws' against rubyjoe_content took 78 millis and 66 Elasticsearch millis. Found 42 total results and returned 20 of them starting at 0. Requested via web for 55af6ada74498665b9ed9d31013b278f by executor 429345900
[/code]

所感

体感、精度ともに向上。導入も比較的容易
細々した設定は必要に迫られたら実施。デフォルトのままでも以前に比べたらかなり改善されている。

コメント

タイトルとURLをコピーしました