class CloudSesame::Query::Node::Fuzziness
Constants
- EXCLUDING_TERMS
Public Class Methods
new(&block)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 8 def initialize(&block) # default fuzziness @max_fuzziness = 3 @min_char_size = 6 @fuzzy_percent = 0.17 instance_eval(&block) if block_given? end
Public Instance Methods
compile(string)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 30 def compile(string) (compiled = each_word_in(string) { |word| fuzziness(word) }).compact! "(#{ compiled.join('+') })" end
fuzzy_percent(float)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 26 def fuzzy_percent(float) @fuzzy_percent = float.to_f end
max_fuzziness(int)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 18 def max_fuzziness(int) @max_fuzziness = int.to_i end
min_char_size(int)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 22 def min_char_size(int) @min_char_size = int.to_i end
Private Instance Methods
each_word_in(string, &block)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 37 def each_word_in(string, &block) string.split(' ').map!(&block) end
excluding_term?(word)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 51 def excluding_term?(word) !!(EXCLUDING_TERMS =~ word) end
fuzziness(word)
click to toggle source
# File lib/cloud_sesame/query/node/fuzziness.rb, line 41 def fuzziness(word) if (length = word.length) >= @min_char_size && !excluding_term?(word) fuzziness = (length * @fuzzy_percent).round fuzziness = [fuzziness, @max_fuzziness].min "#{ word }~#{ fuzziness }" else word end end