# File lib/rom/solr/relations/documents_relation.rb, line 22 def primary_key :id end
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
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
# 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
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
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