- blogs:
- cles::blog
2009/10/13

Solr-rubyでmultiValuedなフィールドにデータを入れる


SolrのRubyクライアントであるSolr-rubyはちゃんとドキュメンテーションがされていないので、サンプルに載っていない事をやろうとすると結局ソースを読まなくてはいけないのが難点です。今回はスキーマでmultiValued="true"と指定されているフィールドに複数の値しようと思ったのですが、やり方が分からないので適当にArrayに入れて突っ込んでみたところ、これが偶然通ってしまいました。
#!/bin/ruby
require 'solr'
data = {
:id => 1,
:name => "foo",
:category => ["bar","baz"],
}
doc = Solr::Document.new(data)
conn = Solr::Connection.new('http://localhost:8983/solr', :autocommit => :on)
conn.add(doc)
conn.close
ひとまずやりたい事は達成できたものの、ちょっとこのままでは気持ち悪いので調べてみます。
Solr::Documentクラスにちょうど下記のような部分があり、Hashのvalueになっているオブジェクトがeachメソッドを持っていて、String以外のクラスであるという条件を満たしていれば、eachを使って要素を取り出して追加するようになっていました。
/usr/lib64/ruby/gems/1.8/gems/solr-ruby-0.0.7/lib/solr/document.rb
# Append a Solr::Field
#
# doc << Solr::Field.new(:creator => 'Jorge Luis Borges')
#
# If you are truly lazy you can simply pass in a hash:
#
# doc << {:creator => 'Jorge Luis Borges'}
def <<(fields)
case fields
when Hash
fields.each_pair do |name,value|
if value.respond_to?(:each) && !value.is_a?(String)
value.each {|v| @fields << Solr::Field.new(name => v)}
else
@fields << Solr::Field.new(name => value)
end
end
when Solr::Field
@fields << fields
else
raise "must pass in Solr::Field or Hash"
end
end
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3250
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . Windows 10 で勝手にログアウトされないようにする(7297)
2 . これが本物の「Amazon セキュリティ警告」(5821)
3 . リモートデスクトップで Alt + PrtSc と同じことをするには(5415)
4 . 「日次」は「にちじ」じゃない?(4477)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(4230)
2 . これが本物の「Amazon セキュリティ警告」(5821)
3 . リモートデスクトップで Alt + PrtSc と同じことをするには(5415)
4 . 「日次」は「にちじ」じゃない?(4477)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(4230)
cles::blogについて
Referrers