@blog.justoneplanet.info

日々勉強

Apache Solrを使ってみる

■インストール

macにインストールする

Javaは既に入ってると思うので、以下のコマンドでダウンロードする。

wget http://ftp.tsukuba.wide.ad.jp/software/apache/lucene/solr/3.6.0/apache-solr-3.6.0.zip
unzip apache-solr-3.6.0.zip
cd apache-solr-3.6.0

CentOSにインストールする

Javaが必要なので以下のコマンドでJavaをインストールする。

yum install java-1.6.0-openjdk
java -version

以下のコマンドでダウンロードする。

wget http://ftp.tsukuba.wide.ad.jp/software/apache/lucene/solr/3.6.0/apache-solr-3.6.0.tgz
tar xvzf apache-solr-3.6.0.tgz
cd apache-solr-3.6.0

■設定

example/conf/schema.xml

<schema>
 <!--typesは大体元のxmlファイルを使う-->
 <fields>
   <field name="id"        type="string"       indexed="true" stored="true"  required="true" /> 
   <field name="name"      type="text_ja"      indexed="true" stored="true"  required="true" />
   <field name="value"     type="text_ja"      indexed="true" stored="true"  required="true" />
   <field name="text"      type="text_ja"      indexed="true" stored="false" multiValued="true"/>
   <field name="is_public" type="boolean"      indexed="true" stored="true"  required="true" />
 </fields>
 <uniqueKey>id</uniqueKey>
 <copyField source="name"  dest="text"/>
 <copyField source="value" dest="text"/>
</schema>

ポート変更

デフォルトは8983で動作するが変更したい場合は以下のコマンドを実行する。

vim etc/jetty.xml

以下の部分を

<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>

以下のように変更する。

<Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>

■データの準備

example/exampledocs/mydata.xml

同じディレクリに入ってるデータを参考に以下のようにしてみる。

<add>
<doc>
  <field name="id">1</field>
  <field name="name">春</field>
  <field name="value">花粉症,花</field>
  <field name="is_public">true</field>
</doc>
<doc>
  <field name="id">2</field>
  <field name="name">夏</field>
  <field name="value">暑い,海</field>
  <field name="is_public">true</field>
</doc>
<doc>
  <field name="id">3</field>
  <field name="name">秋</field>
  <field name="value">紅葉</field>
  <field name="is_public">true</field>
</doc>
<doc>
  <field name="id">4</field>
  <field name="name">冬</field>
  <field name="value">寒い,雪</field>
  <field name="is_public">true</field>
</doc>
</add>

あまり良いサンプルデータとはいえない。

■起動

cd example
java -jar start.jar

■データの登録

以下のコマンドでデータを登録する。

java -jar example/exampledocs/post.jar example/exampledocs/mydata.xml

■遊ぶ

http://localhost:8983/solr/admin/にアクセスする。

■データの削除

solrを止めてから以下のコマンドを実行する。

rm -fr example/solr/data/index

順序を間違えると面倒な事になる。

参考

■nginxをたてる

リモートにsolrを立てる場合は何らかの認証をしたいのでnginxを使ってBasic認証してみる。

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
yum install nginx
/sbin/chkconfig nginx on
/sbin/chkconfig --list nginx

nginxの設定

vim /etc/nginx/nginx.conf

以下のように記述する

location / {
    proxy_pass http://127.0.0.1:8389;
    auth_basic "Type your ID and password";
    auth_basic_user_file htpasswd;
}
yum install httpd
htpasswd -c /etc/nginx/htpasswd hoge
/etc/init.d/nginx restart

参考

■起動

再起動時にsolrが起動するようにする。

vim ~/start.sh
#!/bin/bash

cd /home/hoge/apache-solr-3.6.0/example
nohup java -jar /home/hoge/apache-solr-3.6.0/example/start.jar > /home/hoge/log/solr.log &
chmod 0777 start.sh

スクリプトが起動時に実行されるようにする。

sudo crontab -e
@reboot /home/ec2-user/start.sh

参考

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment