CentOS7にSolr5.0を入れる手順
ユリ熊嵐面白いですよね。
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/で管理画面にアクセスできることを確認
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'
管理画面でデータが登録されたことを確認し、日本語で検索できる事を確認
基本的な導入は以上です。3.x系に比べるとだいぶ簡単になった気がしますね。
詳細な設定についてはまた機会を見つけて書きたいと思います。
ユリ熊嵐は面白いのでみんなで見ましょう。