読者です 読者をやめる 読者になる 読者になる

サナギわさわさ.json

サナギさんとキルミーベイベーとプログラミングが好きです

CentOS7にSolr5.0を入れる手順

Solr プログラミング

ユリ熊嵐面白いですよね。
CentOS7にSolr5.0を入れたので、その時の手順を残しておきます。

まず注意点として、Solr5.0ではJavaは1.7u55以上でないと正常に動きません。更にsolr.xmlの形式が変わっており、Solr4.3以前のものでは動かなくなっていることにも注意してください。
また、5.0ではSolrはスタンドアロンなサーバーアプリケーションとして動作します。今まで通りwar形式で出力してJettyやTomcat上で動かすことも一応できるようですが、推奨はされていません。

サービスインストールから起動確認まで

Solr5.0ではinstall_solr_service.shがサービスインストールをやってくれるので、非常に簡単です。

yum install java-1.7.0-openjdk*
java -version ※u55以上になっていることを確認
wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/lucene/solr/5.0.0/solr-5.0.0.tgz
tar xzvf solr-5.0.0.tgz
cd solr-5.0.0
./bin/install_solr_service.sh ../solr-5.0.0.tgz
service solr stop ※サービスで動いているので一度ストップし、systemdで再起動
systemctl start solr
systemctl status solr
ポート開放

以下の内容で/etc/firewalld/services/solr.xmlを作成

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene</short>
  <description>Solr</description>
  <port protocol="tcp" port="8893"/>
</service>
firewall-cmd --permanent --zone=public --add-service=solr
systemctl restart firewalld.service

わざわざxmlを作るのが面倒な人は、普通にポート開けてください。

firewall-cmd --zone=public --add-port=8893/tcp --permanent
systemctl restart firewalld.service

この時点で、http://localhost:8983/solr/で管理画面にアクセスできることを確認

f:id:kakakazuma:20150318002413p:plain

Coreの作成

Solr5.0ではCoreの情報をsolr.xmlではなくcore.propertiesに記述するようになっています。

mkdir /var/solr/data/sample
cp -rp server/solr/configsets/sample_techproducts_configs/conf/ /var/solr/data/sample/
mkdir /var/solr/data/sample/data
chmod -R a+w /var/solr/data/sample/data

以下の内容で/var/solr/data/sample/core.propertiesを作成

name=sample
config=solrconfig.xml
schema=schema.xml
dataDir=data

systemctl restart solrを行った後に管理画面にアクセスし、コアが作成できた事を確認

サンプルデータの登録と検索機能確認

サンプルデータとして日本を代表する著作物データを登録して検索機能をチェックします。
今回はfieldをtext_jaにして日本語の形態素解析を行っていますが、そこは適切な物を選択してください。

/sample/conf/schema.xmlを編集してスキーマ定義を変更

<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="_root_" type="string" indexed="true" stored="false"/>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

<field name="title" type="text_ja" indexed="true" stored="true" multiValued="true"/>
<field name="author" type="text_ja" indexed="true" stored="true"/>
<field name="text" type="text_ja" indexed="true" stored="false" multiValued="true"/>

<copyField source="title" dest="text"/>
<copyField source="author" dest="text"/>

<uniqueKey>id</uniqueKey>

ユニークidを自動発番するように変更 ※必要なければやらなくても良い
/sample/conf/solrconfig.xml

<updateRequestProcessorChain>
 <processor class="solr.UUIDUpdateProcessorFactory">
  <str name="fieldName">id</str>
 </processor>
 <processor class="solr.LogUpdateProcessorFactory" />
 <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

データ投入用jsonを作成

[
  {
    "title" : "サナギさん",
    "author" : "施川 ユウキ"
  }
,
  {
    "title" : "鬱ごはん",
    "author" : "施川 ユウキ"
  }
,
  {
    "title" : "オンノジ",
    "author" : "施川 ユウキ"
  }
,
  {
    "title" : "キルミーベイベー",
    "author" : "カヅホ"
  }
,
  {
    "title" : "ハルシオン・ランチ",
    "author" : "沙村 広明"
  }
,
  {
    "title" : "幻想ギネコクラシー",
    "author" : "沙村 広明"
  }
,
  {
    "title" : "ユリ熊嵐",
    "author" : "幾原 邦彦"
  }
,
  {
    "title" : "輪るピングドラム",
    "author" : "幾原 邦彦"
  }
]

データを登録

curl http://localhost:8983/solr/sample/update?commit=true --data-binary @data.json -H 'Content-type:text/json;charset=utf-8'

管理画面でデータが登録されたことを確認し、日本語で検索できる事を確認

f:id:kakakazuma:20150318005254p:plain

f:id:kakakazuma:20150318005318p:plain

基本的な導入は以上です。3.x系に比べるとだいぶ簡単になった気がしますね。
詳細な設定についてはまた機会を見つけて書きたいと思います。
ユリ熊嵐は面白いのでみんなで見ましょう。