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
order=(values)
click to toggle source
print()
click to toggle source
# File lib/eco/data/fuzzy_match/results.rb, line 57 def print msg = results.map do |result| result.print end.join("\n ") puts "'#{value}':\n " + msg end
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