class Eco::Data::FuzzyMatch::Results

Attributes

threshold[RW]

Public Instance Methods

each(&block) click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 13
def each(&block)
  return to_enum(:each) unless block
  raw_results.each(&block)
end
empty?() click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 9
def empty?
  count < 1
end
merge(res) click to toggle source

Merges the results of both Results object

# File lib/eco/data/fuzzy_match/results.rb, line 19
def merge(res)
  unless self.needle == res.needle
    raise "To merge 2 Results, needle should be the same ('#{value}'). Given '#{res.value}'"
  end
  self.class.new(needle, value, raw_results.concat(res.raw_results))
end
order() click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 49
def order
  @order ||= [:words_ngrams, :dice]
end
print() click to toggle source
relevant_results(**options) click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 30
def relevant_results(**options)
  options = {order: order, threshold: threshold || 0.5}.merge(options)
  raw_results.select do |result|
    result.all_threshold?(options[:order], options[:threshold])
  end.yield_self do |filtered|
    self.class.new(needle, value, filtered).tap do |results|
      results.order = options[:order]
    end
  end
end
results() click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 53
def results
  raw_results.sort
end
results_with_false_positives() click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 26
def results_with_false_positives
  relevant_results(order: :jaro_winkler, threshold: 0.5)
end

Private Instance Methods

item_string(item, attr = self.method) click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 67
def item_string(item, attr = self.method)
  return item if !item || item.is_a?(String) || !attr
  attr = attr.to_sym
  return item.send(attr) if item.respond_to?(attr)
end