BLOGTIMES
2009/08/08

Solr-rubyで複数のドキュメントを一括Post

  ruby  solr 
このエントリーをはてなブックマークに追加

SolrのRubyクライアントであるsolr-rubyを使ってみているのですが、肝心のsolr-ruby - Solr Wikiにはこんなサンプルしか載っていません。これだとドキュメント1つごとに一回のHTTP通信が発生するため、ドキュメントの量が多い場合にはあまり効率が良くありません。

require 'solr' # connect to the solr instance conn = Solr::Connection.new('http://localhost:8983/solr', :autocommit => :on) # add a document to the index conn.add(:id => 123, :name => 'Lucene in Action')

ひとまずソースコードに目を通してみると、Solr::Request::AddDocumentはコンストラクタに配列でSolr::Documentが渡せるようなので、こんな感じで書くといっぺんに投げられるようになりました。

require 'solr' docs = [] docs.push Solr::Document.new(:id => 1, :name => 'foo') docs.push Solr::Document.new(:id => 2, :name => 'bar') docs.push Solr::Document.new(:id => 3, :name => 'baz') req = Solr::Request::AddDocument.new(docs) conn = Solr::Connection.new('http://localhost:8983/solr', :autocommit => :on) conn.send(req)

そもそもこんなことせずに大量にドキュメントを登録するときはおとなしくCSVかDIHを使えっていう話なのかもしれませんが。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3151
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン