Sha256: b4bece243a85a697fcd6862483a41251cc84115aac640e8747b751b94768d80f
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
module CloudSesame module Query module Node class Fuzziness def initialize(&block) # default fuzziness @max_fuzziness = 3 @min_char_size = 6 @fuzzy_percent = 0.17 instance_eval &block if block_given? end def max_fuzziness(int) @max_fuzziness = int.to_i end def min_char_size(int) @min_char_size = int.to_i end def fuzzy_percent(float) @fuzzy_percent = float.to_f end def parse(string) result = each_with(string) { |word| fuzziness word } join_by_and result end private def each_with(string, &block) string.split(' ').map &block end def fuzziness(word) if word.length >= @min_char_size && !excluding_term?(word) fuzziness = (word.length * @fuzzy_percent).round fuzziness = [fuzziness, @max_fuzziness].min "#{word}~#{fuzziness}" else word end end def join_by_and(*args) (args = args.flatten.compact).size > 1 ? "(#{ args.join('+') })" : args[0] end def excluding_term?(word) !!word.match(/^\-/) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
CloudSesame-0.2.2 | lib/cloud_sesame/query/node/fuzziness.rb |