Class: RSolr::Message::Adapter::Builder
- Inherits:
-
Object
- Object
- RSolr::Message::Adapter::Builder
- Defined in:
- lib/rsolr/message/adapter/builder.rb
Instance Method Summary collapse
-
#add(documents, add_attrs = {}) ⇒ Object
generates "add" xml for updating solr "data" can be a hash or an array of hashes.
-
#commit(opts = {}) ⇒ Object
generates a
message. -
#delete_by_id(ids) ⇒ Object
generates a
message "ids" can be a single value or array of values.ID -
#delete_by_query(queries) ⇒ Object
generates a
message "queries" can be a single value or an array of values.ID -
#optimize(opts = {}) ⇒ Object
generates a
message. -
#rollback ⇒ Object
generates a
message. -
#xml ⇒ Object
shortcut method -> xml = RSolr::Message.xml.
Instance Method Details
#add(documents, add_attrs = {}) ⇒ Object
generates "add" xml for updating solr "data" can be a hash or an array of hashes.
- each hash should be a simple key=>value pair representing a solr doc. If a value is an array, multiple fields will be created.
"add_attrs" can be a hash for setting the add xml element attributes.
This method can also accept a block. The value yielded to the block is a Message::Document; for each solr doc in "data". You can set xml element attributes for each "doc" element or individual "field" elements.
For example:
solr.add(:nickname=>'Tim', :commitWithin=>1.0) do |doc_msg| doc_msg.attrs = 10.00 # boost the document nickname = doc_msg.field_by_name(:nickname) nickname.attrs = 20 if nickname.value=='Tim' # boost a field end
would result in an add element having the attributes boost="10.0" and a commitWithin="1.0". Each doc element would have a boost="10.0". The "nickname" field would have a boost="20.0" if the doc had a "nickname" field with the value of "Tim".
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/rsolr/message/adapter/builder.rb', line 35 def add(documents, add_attrs={}) xml.add(add_attrs) do |add_node| documents.each do |doc| # create doc, passing in fields add_node.doc(doc.attrs) do |doc_node| doc.fields.each do |field_obj| doc_node.field(field_obj.value, field_obj.attrs) end end end end end |
#commit(opts = {}) ⇒ Object
generates a
49 50 51 |
# File 'lib/rsolr/message/adapter/builder.rb', line 49 def commit(opts={}) xml.commit(opts) end |
#delete_by_id(ids) ⇒ Object
generates a
65 66 67 68 69 70 71 72 |
# File 'lib/rsolr/message/adapter/builder.rb', line 65 def delete_by_id(ids) ids = [ids] unless ids.is_a?(Array) xml.delete do |xml| ids.each do |id| xml.id(id) end end end |
#delete_by_query(queries) ⇒ Object
generates a
76 77 78 79 80 81 82 83 |
# File 'lib/rsolr/message/adapter/builder.rb', line 76 def delete_by_query(queries) queries = [queries] unless queries.is_a?(Array) xml.delete do |xml| queries.each do |query| xml.query(query) end end end |
#optimize(opts = {}) ⇒ Object
generates a
54 55 56 |
# File 'lib/rsolr/message/adapter/builder.rb', line 54 def optimize(opts={}) xml.optimize(opts) end |
#rollback ⇒ Object
generates a
59 60 61 |
# File 'lib/rsolr/message/adapter/builder.rb', line 59 def rollback xml.rollback end |
#xml ⇒ Object
shortcut method -> xml = RSolr::Message.xml
6 7 8 |
# File 'lib/rsolr/message/adapter/builder.rb', line 6 def xml ::Builder::XmlMarkup.new end |