Apache Solr
全文検索エンジンと言えば旬の「Elasticsearch」ですが、たまたま Apache Solr を調査する機会があったのでそのメモです。しかし枯れた感じがする Solr だけど意外とインストールに手間取った。
ソフトウェア | バージョン |
---|---|
Java | 1.7.0 |
Apache Solr | 4.9.1 |
Jetty | 9.2.10 |
Vagrant
いつもの定義だってばさw
config.vm.define :solr do |node|
node.vm.network :private_network, ip: "192.168.11.210"
node.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512]
end
end
Java のインストール
Solr 4.9系は、JDK 7以上じゃないと動かないよ、ってどこかで見たような気がするので、JDK 7 ランタイム,開発環境, ant と wget をインストールします。まあランタイムだけでもいいっちゃいいと思うけどねw
# yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64 ant.x86_64 wget
Apache Solr のインストールと起動確認
インストール先は、どこでもいいのですが特にこだわりないので、/var/local にインストールしました(ちゃんと考えると /opt がいいかもねw)。
$ wget http://ftp.riken.jp/net/apache/lucene/solr/4.9.1/solr-4.9.1.tgz
$ tar xvfz solr-4.9.1.tgz
$ sudo cp -rp solr-4.9.1 /var/local/solr/
$ cd /var/local/solr/example
$ sudo java -jar start.jar
ずらずらずらーってなんだか滝のように表示されるけどエラーらしき表示がされていなければ、Solr が起動してますので。管理画面が表示されるるかブラウザで確認してます。
管理画面 : http://192.168.11.210:8983/solr
検索画面 : http://192.168.11.210:8983/solr/collection1/browse
データを登録、検索してみる
適当なとこに下記のファイルを作成します。
<add>
<doc>
<field name="id">1</field>
<field name="name">hoge hoge</field>
</doc>
<doc>
<field name="id">2</field>
<field name="name">アパッチ</field>
</doc>
<doc>
<field name="id">3</field>
<field name="name">東京特許許可局</field>
</doc>
</add>
curl を使って登録してみます。
$ curl 'http://localhost:8983/solr/collection1/update?commit=true&indent=true' --data-binary @solrtest.xml -H 'Content-Type: text/xml'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">155</int>
</lst>
</response>
curl を使って検索してみます。
# curl "http://localhost:8983/solr/collection1/select?q=hoge&wt=json&indent=true"
{
"responseHeader":{
"status":0,
"QTime":10,
"params":{
"indent":"true",
"q":"hoge",
"wt":"json"}},
"response":{"numFound":1,"start":0,"docs":[
{
"id":"1",
"name":"hoge hoge",
"_version_":1498497071919923200}]
}}
Jetty 9 をインストールし Solr を起動
ここまで順調ですが、こっからが多少はまりました。
起動に失敗するw
折角なので Jetty 9 を使って Solr を起動してみます。そして起動しないってオチを再現します。
$ wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.10.v20150310.tar.gz
$ tar zxvf jetty-distribution-9.2.10.v20150310.tar.gz
$ sudo cp -rp jetty-distribution-9.2.10.v20150310 /var/local/jetty/
$ sudo cp /var/local/jetty/bin/jetty.sh /etc/init.d/jetty
jetty の起動パラメータを /etc/default/jetty に設定します。
JAVA_HOME=/etc/alternatives/java_sdk
JAVA_OPTIONS="-Djava.awt.headless=true -server -XX:+UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseTLAB -XX:MaxPermSize=128m -Xms512M -Xmx1024M $JAVA_OPTIONS -Dsolr.solr.home=/var/local/solr/example/solr"
NO_START=0
JETTY_ARGS=jetty.port=8983
JETTY_USER=root
JETTY_HOME=/var/local/jetty
JETTY_LOGS=/var/local/solr/example/logs
で、サービスを起動してみます。エラーが発生しとるw
# service jetty start
動かない理由がわかった
jettyで動かすための環境が整備されていないというオチでした。なので設定ファイルもコピーしたりして再挑戦します。
$ sudo cp -a /var/local/solr/example/webapps/solr.war /var/local/jetty/webapps/solr.war
$ sudo cp -a /var/local/solr/example/contexts/solr-jetty-context.xml /var/local/jetty/webapps/solr.xml
$ sudo cp -a /var/local/solr/example/lib/ext/* /var/local/jetty/lib/ext/
$ sudo service jetty start
管理画面が表示されたー (^^
INFO をファイルに保存
INFO が画面に表示されウザイと思ったら log4j の設定がされていなかった。ので、ファイルに保存するよう適当に編集します。ここらへんは、後々に響くのでちゃんと設定しといた方が良いです。
# This is not needed by Jetty - but it helps with many web apps.
log4j.rootLogger=INFO, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9
#- File to log to and log format
solr.log=/var/local/solr/example/logs
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
よっしゃ。
参考にさせて頂いたサイトさま
Ubuntu12.04にJetty9とsolr4.5.1をインストールしてみる
Apache Solrのインストール
apache solr インストール