Class: RSolr::Message::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/rsolr/message/document.rb

Overview

A class that represents a “doc” xml element for a solr update

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(doc_hash = {}) ⇒ Document

“doc_hash” must be a Hash/Mash object If a value in the “doc_hash” is an array, a field object is created for each value…



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rsolr/message/document.rb', line 11

def initialize(doc_hash = {})
  @fields = []
  doc_hash.each_pair do |field,values|
    # create a new field for each value (multi-valued)
    # put non-array values into an array
    values = [values] unless values.is_a?(Array)
    values.each do |v|
      next if v.to_s.empty?
      @fields << RSolr::Message::Field.new({:name=>field}, v.to_s)
    end
  end
  @attrs={}
end

Instance Attribute Details

#attrsObject

“attrs” is a hash for setting the “doc” xml attributes “fields” is an array of Field objects



6
7
8
# File 'lib/rsolr/message/document.rb', line 6

def attrs
  @attrs
end

#fieldsObject

“attrs” is a hash for setting the “doc” xml attributes “fields” is an array of Field objects



6
7
8
# File 'lib/rsolr/message/document.rb', line 6

def fields
  @fields
end

Instance Method Details

#add_field(name, value, options = {}) ⇒ Object

Add a field value to the document. Options map directly to XML attributes in the Solr <field> node. See wiki.apache.org/solr/UpdateXmlMessages#head-8315b8028923d028950ff750a57ee22cbf7977c6

Example:

document.add_field('title', 'A Title', :boost => 2.0)


44
45
46
# File 'lib/rsolr/message/document.rb', line 44

def add_field(name, value, options = {})
  @fields << RSolr::Message::Field.new(options.merge({:name=>name}), value)
end

#field_by_name(name) ⇒ Object

returns the first field that matches the “name” arg



31
32
33
# File 'lib/rsolr/message/document.rb', line 31

def field_by_name(name)
  @fields.detect{|f|f.name==name}
end

#fields_by_name(name) ⇒ Object

returns an array of fields that match the “name” arg



26
27
28
# File 'lib/rsolr/message/document.rb', line 26

def fields_by_name(name)
  @fields.select{|f|f.name==name}
end