class RediSearcher::Document
Constants
- OPTIONS_FLAGS
- OPTIONS_PARAMS
Attributes
doc_id[R]
fields[R]
index[R]
weight[R]
Public Class Methods
new(index, doc_id, weight = nil, **fields)
click to toggle source
# File lib/redi_searcher/document.rb, line 14 def initialize(index, doc_id, weight = nil, **fields) @index = index @doc_id = doc_id @fields = filter_by_schema(fields) @weight = weight || RediSearcher::DEFAULT_WEIGHT end
Public Instance Methods
add(**options)
click to toggle source
# File lib/redi_searcher/document.rb, line 21 def add(**options) index.client.call(ft_add(options)) end
del(**options)
click to toggle source
# File lib/redi_searcher/document.rb, line 25 def del(**options) index.client.call(ft_del(options)) end
Private Instance Methods
filter_by_schema(fields)
click to toggle source
# File lib/redi_searcher/document.rb, line 56 def filter_by_schema(fields) fields.slice(*schema_fields.keys) end
ft_add(**options)
click to toggle source
# File lib/redi_searcher/document.rb, line 31 def ft_add(**options) ['FT.ADD', index.name , doc_id, weight, *serialize_options(:add, options), 'FIELDS', *serialize_fields] end
ft_del(**options)
click to toggle source
# File lib/redi_searcher/document.rb, line 35 def ft_del(**options) ['FT.DEL', index.name , doc_id, *serialize_options(:del, options)] end
schema_fields()
click to toggle source
# File lib/redi_searcher/document.rb, line 52 def schema_fields Hash[index.schema.fields.map {|field| [field.name, {type: field.type, options: field.options}] }] end
serialize_fields()
click to toggle source
# File lib/redi_searcher/document.rb, line 39 def serialize_fields fields.map do |key, value| if value.is_a? Array value = serialize_tag_array(value, schema_fields[key][:options][:separator]) if schema_fields[key][:type] == :tag end [(key.to_s rescue key) || key, value] end.compact end
serialize_tag_array(values, separator)
click to toggle source
# File lib/redi_searcher/document.rb, line 48 def serialize_tag_array(values, separator) values.map { |value| value.to_s.gsub(separator, '') }.join(separator) end