Class: Estella::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/estella/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(model) ⇒ Parser

Returns a new instance of Parser.



3
4
5
# File 'lib/estella/parser.rb', line 3

def initialize(model)
  @model = model
end

Instance Method Details

#boost(name, opts = {}) ⇒ Object

document level boost



9
10
11
12
13
14
# File 'lib/estella/parser.rb', line 9

def boost(name, opts = {})
  fail ArgumentError, 'Boost field is not indexed!' unless @model.indexed_fields.include? name
  fail ArgumentError, 'Please supply a modifier and a factor for your boost!' unless (opts.keys & %i[modifier factor]).length == 2

  @model.field_boost = { boost: { field: name }.merge(opts) }
end

#field(name, opts = {}) ⇒ Object

index a field



17
18
19
20
21
22
23
24
25
# File 'lib/estella/parser.rb', line 17

def field(name, opts = {})
  using = opts[:using] || name
  analysis = opts[:analysis] & @model.default_analysis_fields.keys
  opts[:fields] ||= Hash[analysis.zip(@model.default_analysis_fields.values_at(*analysis))] if analysis
  include_raw = opts.delete(:include_raw)
  opts[:fields][:raw] = { type: 'keyword' } if include_raw
  @model.indexed_json.merge!(name => using)
  @model.indexed_fields.merge!(name => opts)
end