Module: FuzzySearch

Defined in:
lib/split_trigrams.rb,
lib/fuzzy_search_ver.rb,
lib/fuzzy_model_extensions.rb,
lib/trigram_model_extensions.rb

Defined Under Namespace

Modules: FuzzyModelExtensions, TrigramModelExtensions

Constant Summary collapse

VERSION =
"0.4"

Class Method Summary collapse

Class Method Details

.split_trigrams(s) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/split_trigrams.rb', line 2

def self.split_trigrams(s)
  s = s.join(" ") if s.is_a?(Array)
  return [] unless s and s.respond_to?(:to_s)
  words = s.to_s.strip.split(/[\s\-]+/)
  trigrams = Set.new
  words.each do |w|
    chars = w.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n,'').downcase.strip
    chars = " " + chars + " "
    (0..chars.length-3).each do |idx|
      trigrams << chars[idx,3].to_s
    end
  end
  return trigrams.to_a
end