Apache Solr始めました。入門編としてインストールからまとめてみます。
ローカル環境からAWSのRDS(MS SQLServer)に接続しINDEXを作る、作ったINDEXに対し C#を使ってHTTP経由で検索を行う…あたりまでまとめられればと思います。
インストール
最終的にセットアップする開発環境は以下のようになります。
- Windows10(私はPro版で、Mac+Bootcampを使用しています)
- Java 1.8.0(JREがあれば動きます)
- Apache Solr 7.6.0
- Microsoft SQL Server 2017(AWSのRDSと接続します)
- Jdbc(mssql-jdbc-7.0.0.jre8.jar)
- C#(Visual Studio Community2017)
Solrソフトウェアのダウンロード
実行ファイルを公式ページ(http://lucene.apache.org/solr/)からダウンロード・解凍します。
以下のミラーサイト(FTP)からダウンロードをするのが早いと思います。
ftp://ftp.kddilabs.jp/infosystems/apache/lucene/solr/7.6.0
ダウンロード対象は「solr-7.6.0.zip」です。ダウンロード後、任意の場所へ解凍してください。ここでは以下のディレクトリに展開します。
「C:\opt\solr-7.6.0」
Javaのダウンロード
インストーラーを公式ページからダウンロードし、インストールを実行します。
https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
ダウンロード対象は「jre-8u191-windows-x64.exe」です。インストール後、
コマンドプロンプトからバージョンの確認をします。
Solrの実行
コマンドプロンプトから実行します。実行ファイルへパスが通っていないと思いますので、ディレクトリ移動したうえで実行します。Solrのサービス開始コマンドは「solr start」です。「Happy searching!」と表示されれば、起動が正常に完了した証拠です。
ちなみに停止は「solr stop -all」です。ディレクトリを移動して実行してみます。
>cd C:\opt\solr-7.6.0\bin
C:\opt\solr-7.6.0\bin>solr start
INFO - 2018-12-26 14:21:59.853; org.apache.solr.util.configuration.SSLCredentialProviderFactory; Processing SSL Credential Provider chain: env;sysprop
Waiting up to 30 to see Solr running on port 8983
Started Solr server on port 8983. Happy searching!
>
上記の通り、「Happy searching!」とメッセージが表示され、Solrが起動しました。ここからはブラウザで確認していきます。以下のURLへアクセスしますと、Solrの管理画面が表示されます。
http://localhost:8983/

Coreの作成
インデックスを作る単位(?現在勉強中です)を「Core」と呼んでいるようです。私は検索対象となるデータの集合体と理解しています。
Solrで検索できるようにまでの流れとして、
- Coreを作成する
- Coreに対し、検索対象のデータ(XML、PDF、jsonデータ、DBのデータなどなど…。)を登録する
- Indexingをする
- 作成したCoreに対し、検索可能になる
という流れになります。まずはお試しでCoreを1つ作成し、Jsonデータを登録、検索してみましょう。コマンドプロンプトから以下のように実行します。
>solr create -c test01
WARNING: Using _default configset with data driven schema functionality. NOT RECOMMENDED for production use.
To turn off: bin\solr config -c test01 -p 8983 -action set-user-property -property update.autoCreateFields -value false
INFO - 2018-12-26 14:53:33.684; org.apache.solr.util.configuration.SSLCredentialProviderFactory; Processing SSL Credential Provider chain: env;sysprop
Created new core 'test01'
「Created new core 'xxxx ' 」と表示されれば成功です。これで入れ物が出来上がりました。管理画面から確認すると「test01」が登録されています。ただ、ドキュメントを登録していないのでnumDocsの値が0と表示されています。このCoreにドキュメントを登録してきます。
