- blogs:
- cles::blog

Solr でデータベースをインデックス化する

これまでSolrを使うときにはデータはテキストファイルに書き出して、それをXMLに変換してPOSTで送ってデータを登録するということをやっていたのですが、DBのデータを無加工でSolrに入れたいということも多くなってきたので、初めてData Import Request Handlerという機能を使ってみました。この機能を使うとDBの内容を直接Solrのコアに取り込むことができます。
パフォーマンス的にもXMLへのエンコード/デコードの負荷が大きかったので、データの投入もかなりスピーディーに行えるようになったので満足です。
以下、設定メモ。
† SolrのData Import Request Handlerを使ったデータベースのインデックス化の手順
1.コアを作る
今回は Solr は 3.1.0 を使いました。単純に配布されているアーカイブを展開し、apache-solr-3.1.0/example/core_name という名前でコアを作るということを前提にします。まずは通常どおり apache-solr-3.1.0/example/core_name/schema.xml を編集してスキーマを定義しておきます。ここまでは通常のSolrのコアの設定と変わりません。
2.JDBCドライバを入れる
次に apache-solr-3.1.0/example/core_name/lib というディレクトリを作ってここに利用するJDBCドライバのjarを入れておきます。これを忘れるとデータベースに接続できません。
3.solrconfig.xmlを編集する
Data Import Request Handlerを有効化するために apache-solr-3.1.0/example/core_name/conf/solrconfig.xml に下記を追加します。
4.設定ファイルを作る
Data Import Request Handlerの設定ファイルである apache-solr-3.1.0/example/core_name/conf/data-config.xml を新規作成します。例えばこんな感じ
5.データベースの内容をインデックスさせる
http://solrhost:8983/solr/dataimport にアクセスして、下記のようなxmlが出るのを確認する。
http://solrhost:8983/solr/dataimport?command=full-import にアクセスするとインデックスが始まります。
最初のURLにアクセスするとstatusが変わって、インデックスが進んでいく様子が確認できます。
あとはSolrとして普通に検索するだけです。
† おまけ
jettyの起動終了用のスクリプトを書いたので、こちらもメモ代わりに。
solr.sh
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4202
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110756)
3 . 年次の人間ドックへ(110359)
4 . 2023 年分の確定申告完了!(1つめ)(109907)
5 . 三菱鉛筆がラミーを買収(109806)