Solrをイジった備忘録その1(データ投入編)

【Solrへのデータ投入】   Solrへのデータの投入の流れは以下のようになります。 ====== ドキュメントを作って⇒SolrServerにaddして⇒コミットして⇒最適化して ======   Javaを使って、Solrへデータを投入する場合、SolrJというライブラリがあります。 SolrJではSolrServerというクラスを使ってSolrと会話をします。 SolrServerは抽象的なオブジェクトになっていて、実装は以下の3つです。    1. CommonsHttpSolrServer   HTTP通信でデータを入れ込みます。   SolrはJettyやTomcatといったServletコンテナ上で動作するアプリケーションなので、   なんといいますか、普通にWebアプリみたいな感じです。   Restfulとかそういうわけでもなく、その辺も普通のWebアプリ的です。    2. EmbeddedSolrserver   中身の実装は良くわかりませんが、直接Solrにデータを入れ込みます。   HTTP的な処理をしなくて良いので速度は早くなります。   イメージ的には、Solrからデータベースやファイルシステムなどに   データを取りにいって反映する感じです。   自分のサービスではEmbeddedSolrServerを使用しています。    3. LBHttpSolrServer   LBはロードバランスの略で、ラウンドロビンによる負荷分散ができるそうです。   使ったことありません。   今回は負荷テスト用に1.のCommonsHttpSolrServerを使ってみました。 テスト環境なのでプロキシサーバを介して行うのですが、なぜかちとハマりました。   プロキシサーバを設定するのに、 - シェルの中でexportで環境変数にセットしたり - JavaVMの起動オプションで-Dでセットしたり - Javaの中でSystem.getProperties().put~とかやったり   が、うまいこと効かなくて。。 最終的には以下のようなやり方で対応しました。 ====== // commonsのHTTPクライアントのインスタンスを作って HttpClient client = new HttpClient(); // 作ったHTTPクライアントにプロキシの設定をしてあげて client.getHostConfiguration().setProxy("プロキシサーバ", ポート); // SolrServerをnewする時に作ったHTTPクライアントを渡してあげます SolrServer server = new CommonsHttpSolrServer("http://サーバ/solr", client); // ちなみに疎通確認ように、SolrServerにはpingなんていうメソッドがあったりします。 server.ping(); ======   で、次にドキュメントの作成と、Solrへドキュメントを突っ込むところですが、 非常に簡単です。 ====== // ドキュメントのオブジェクトを生成して SolrInputDocument document = new SolrInputDocument(); // フィールド名に値をaddします document.addField("フィールド名", "値");  ・・ 何個かフィールドがある ・・ // SolrServerにadd server.add(document); ======   addしただけでは、インデックスに反映されません。 Solrの管理画面上で参照すると docsPending というところに 数値が乗っかってくるのが分かります。(http://サーバ/solr/admin/stats.jsp)   インデックスに反映させるには、RDBMSと同じようにcommitしてあげます。 ====== server.commit(); ====== コミットすると、Solrは内部的に11個のインデックスファイルを生成します。 これが積もり積もっていくと、ファイルが増えすぎて、、な状態になります。   ということで、commitしたら何回かに1回は最適化(optimize)してあげます。 ====== server.optimize(); ====== Apache Solr入門には5回に1回は~と記述されていました。(267ページ)   これだけでイケるのでシンプルで良いですね。   次はロギングの話でも。。   ってか↓この本メチャメチャいいです!お世話になっています。

Apache Solr入門 ―オープンソース全文検索エンジン
関口 宏司 三部 靖夫 武田 光平 中野 猛 大谷 純
技術評論社
売り上げランキング: 4461
おすすめ度の平均: 5.0
5 検索エンジンに興味のある全ての知識レベルの方にお勧め