class ROM::Solr::DocumentsRelation

Public Instance Methods

all() click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 30
def all
  q('*:*')
end
by_unique_key(id) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 26
def by_unique_key(id)
  q('%s:%s' % [ primary_key, id ])
end
cache(enabled = true) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 146
def cache(enabled = true)
  add_params cache: Types::Bool[enabled]
end
commit(value = true) click to toggle source

Commit parameters

# File lib/rom/solr/relations/documents_relation.rb, line 197
def commit(value = true)
  add_params commit: Types::Bool[value]
end
commit_within(millis) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 201
def commit_within(millis)
  add_params commitWithin: Types::Coercible::Integer.optional[millis]
end
count() click to toggle source

@override

Calls superclass method ROM::Solr::Relation#count
# File lib/rom/solr/relations/documents_relation.rb, line 35
def count
  num_found_exact? ? num_found : super
end
cursor() click to toggle source

Set a cursor on the relation for pagination

# File lib/rom/solr/relations/documents_relation.rb, line 40
def cursor
  relation = add_params(cursorMark: '*')

  # Sort must include a sort on unique key (id).
  if /\bid\b/ =~ params[:sort]
    relation
  else
    relation.sort(params[:sort], 'id ASC')
  end
end
cursor?() click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 51
def cursor?
  params.key?(:cursorMark)
end
debug(setting) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 182
def debug(setting)
  add_params debug: Types::Coercible::String.enum('query', 'timing', 'results', 'all', 'true')[setting]
end
def_type(value) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 178
def def_type(value)
  add_params defType: Types::Coercible::String[value]
end
delete(docs) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 99
def delete(docs)
  # FIXME: use input schema
  ids = Array.wrap(docs)
          .map { |doc| doc.transform_keys(&:to_sym) }
          .map { |doc| doc.fetch(:id) }

  with_options(
    base_path: 'update',
    content_type: 'application/json',
    request_data: JSON.dump(delete: ids)
  )
end
delete_by_query(query) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 112
def delete_by_query(query)
  with_options(
    base_path: 'update',
    content_type: 'application/json',
    request_data: JSON.dump(delete: {query: query})
  )
end
each(&block) click to toggle source

@override

Calls superclass method
# File lib/rom/solr/relations/documents_relation.rb, line 13
def each(&block)
  return super unless cursor?

  return to_enum unless block_given?

  DocumentsPaginator.new(dataset).each(&block)
end
echo_params(setting) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 186
def echo_params(setting)
  add_params echoParams: Types::Coercible::String.enum('explicit', 'all', 'none')[setting]
end
explain_other(query) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 158
def explain_other(query)
  add_params explainOther: Types::String[query]
end
expunge_deletes(value = true) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 209
def expunge_deletes(value = true)
  add_params expungeDeletes: Types::Bool[value]
end
fields(*fields)
Alias for: fl
filter(&block) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 61
def filter(&block)
  queries = QueryBuilder.new.instance_eval(&block).to_a

  fq(*queries)
end
fl(*fields) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 138
def fl(*fields)
  new_fields = Types::Array.of(Types::Coercible::String)[fields]

  add_params fl: new_fields.join(',')
end
Also aliased as: fields
fq(*queries) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 131
def fq(*queries)
  old_queries = Array.wrap(params[:fq])
  new_queries = Array.wrap(queries).flatten

  add_params fq: old_queries + new_queries
end
insert(docs) click to toggle source

Commands

# File lib/rom/solr/relations/documents_relation.rb, line 71
def insert(docs)
  # FIXME: use input schema
  data = Array.wrap(docs).map do |doc|
    doc.transform_keys!(&:to_sym)
    doc[:id] ||= UUID[]
    doc
  end

  with_options(
    base_path: 'update/json/docs',
    content_type: 'application/json',
    request_data: JSON.dump(data)
  )
end
limit(num)
Alias for: rows
min_exact_count(num) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 190
def min_exact_count(num)
  add_params minExactCount: Types::Coercible::Integer[num]
end
overwrite(value = true) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 205
def overwrite(value = true)
  add_params overwrite: Types::Bool[value]
end
primary_key() click to toggle source

@override FIXME: Get from Solr schema unique key

# File lib/rom/solr/relations/documents_relation.rb, line 22
def primary_key
  :id
end
q(*queries) click to toggle source

Common Query Parameters

# File lib/rom/solr/relations/documents_relation.rb, line 124
def q(*queries)
  old_queries = Array.wrap(params[:q])
  new_queries = Array.wrap(queries).flatten

  add_params q: (old_queries + new_queries).join(' ')
end
query(&block) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 55
def query(&block)
  queries = QueryBuilder.new.instance_eval(&block).to_a

  q(*queries)
end
rows(num) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 172
def rows(num)
  add_params rows: Types::Coercible::Integer[num]
end
Also aliased as: limit
segment_terminate_early(enabled = true) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 150
def segment_terminate_early(enabled = true)
  add_params segmentTerminateEarly: Types::Bool[enabled]
end
sort(*criteria) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 166
def sort(*criteria)
  new_sort = Types::Array.of(Types::String)[criteria]

  add_params sort: new_sort.join(',')
end
start(offset) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 162
def start(offset)
  add_params start: Types::Coercible::Integer[offset]
end
time_allowed(millis) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 154
def time_allowed(millis)
  add_params timeAllowed: Types::Coercible::Integer[millis]
end
update(docs) click to toggle source
# File lib/rom/solr/relations/documents_relation.rb, line 86
def update(docs)
  # FIXME: use input schema
  data = Array.wrap(docs)
           .map    { |doc| doc.transform_keys(&:to_sym) }
           .select { |doc| doc.key?(:id) }

  with_options(
    base_path: 'update/json/docs',
    content_type: 'application/json',
    request_data: JSON.dump(data)
  )
end