Class: Solr::Document

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/solr/document.rb

Overview

The ASF licenses this file to You under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash = {}) ⇒ Document

Create a new Solr::Document, optionally passing in a hash of key/value pairs for the fields

doc = Solr::Document.new(:name => :creator, :value => 'Jorge Luis Borges')

22
23
24
25
# File 'lib/solr/document.rb', line 22

def initialize(hash={})
  @fields = []
  self << hash
end

Instance Attribute Details

#boostObject

Returns the value of attribute boost


15
16
17
# File 'lib/solr/document.rb', line 15

def boost
  @boost
end

#fieldsObject (readonly)

Returns the value of attribute fields


16
17
18
# File 'lib/solr/document.rb', line 16

def fields
  @fields
end

Instance Method Details

#<<(fields) ⇒ Object

Append a Solr::Field

doc << Solr::Field.new(:name => :creator, :value => 'Jorge Luis Borges')

If you are truly lazy you can simply pass in a hash:

doc << {:name => :creator, :value => 'Jorge Luis Borges'}

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/solr/document.rb', line 34

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 => name, :value => v)}
      else
        @fields << Solr::Field.new(:name => name, :value => value)
      end
    end
  when Solr::Field
    @fields << fields
  else
    raise "must pass in Solr::Field or Hash"
  end
end

#[](name) ⇒ Object

shorthand to allow hash lookups

doc['name']

53
54
55
56
57
# File 'lib/solr/document.rb', line 53

def [](name)
  field = @fields.find {|f| f.name == name.to_s}
  return field.value if field
  return nil
end

#[]=(name, value) ⇒ Object

shorthand to assign as a hash


60
61
62
# File 'lib/solr/document.rb', line 60

def []=(name,value)
  @fields << Solr::Field.new(:name => name, :value => value)
end

#each(*args, &blk) ⇒ Object


82
83
84
# File 'lib/solr/document.rb', line 82

def each(*args, &blk)
  fields.each(&blk)
end

#to_jsonObject


71
72
73
# File 'lib/solr/document.rb', line 71

def to_json
  to_jsonhash.to_json
end

#to_jsonhashObject


64
65
66
67
68
69
# File 'lib/solr/document.rb', line 64

def to_jsonhash
  hash = {'doc' => {}}
  hash['boost'] = @boost if @boost
  @fields.each{ |f| hash['doc'][f.name] = f.value_to_jsonhash }
  hash
end

#to_xmlObject


75
76
77
78
79
80
# File 'lib/solr/document.rb', line 75

def to_xml
  e = Solr::XML::Element.new 'doc'
  e.attributes['boost'] = @boost.to_s if @boost
  @fields.each {|f| e.add_element(f.to_xml)}
  return e
end