class RSolr::JSON::Generator

Constants

CONTENT_TYPE

Public Instance Methods

add(data, add_attrs = {}) { |doc| ... } click to toggle source
# File lib/rsolr/json.rb, line 11
def add data, add_attrs = {}
  add_attrs ||= {}
  data = RSolr::Array.wrap(data)

  if add_attrs.empty? && data.none? { |doc| doc.is_a?(RSolr::Document) && !doc.attrs.empty? }
    data.map do |doc|
      doc = RSolr::Document.new(doc) if doc.respond_to?(:each_pair)
      yield doc if block_given?
      doc.as_json
    end.to_json
  else
    i = 0
    data.each_with_object({}) do |doc, hash|
      doc = RSolr::Document.new(doc) if doc.respond_to?(:each_pair)
      yield doc if block_given?
      hash["add__UNIQUE_RSOLR_SUFFIX_#{i += 1}"] = add_attrs.merge(doc.attrs).merge(doc: doc.as_json)
    end.to_json.gsub(/__UNIQUE_RSOLR_SUFFIX_\d+/, '')
  end
end
commit(opts = {}) click to toggle source

generates a commit message

# File lib/rsolr/json.rb, line 32
def commit(opts = {})
  opts ||= {}
  { commit: opts }.to_json
end
content_type() click to toggle source
# File lib/rsolr/json.rb, line 7
def content_type
  CONTENT_TYPE
end
delete_by_id(ids) click to toggle source

generates a delete message “ids” can be a single value or array of values

# File lib/rsolr/json.rb, line 50
def delete_by_id(ids)
  { delete: ids }.to_json
end
delete_by_query(queries) click to toggle source

generates a delete message “queries” can be a single value or an array of values

# File lib/rsolr/json.rb, line 56
def delete_by_query(queries)
  { delete: { query: queries } }.to_json
end
optimize(opts = {}) click to toggle source

generates a optimize message

# File lib/rsolr/json.rb, line 38
def optimize(opts = {})
  opts ||= {}
  { optimize: opts }.to_json
end
rollback() click to toggle source

generates a rollback message

# File lib/rsolr/json.rb, line 44
def rollback
  { rollback: {} }.to_json
end