rifle 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/rifle.rb CHANGED
@@ -21,22 +21,22 @@ module Rifle
21
21
  # First get the old values
22
22
  old_payload = get_payload_for_urn(urn)
23
23
  if old_payload
24
- old_words = traverse_object(old_payload)
25
- old_metaphones = get_metaphones(old_words)
24
+ old_words = traverse_object_for_word_set(old_payload)
25
+ old_metaphones = get_metaphones_from_word_set(old_words)
26
26
  else
27
27
  old_metaphones = []
28
28
  end
29
29
 
30
30
  # Now get the new ones
31
- words = traverse_object(hash)
32
- metaphones = get_metaphones(words)
31
+ words = traverse_object_for_word_set(hash)
32
+ metaphones = get_metaphones_from_word_set(words)
33
33
 
34
- # Clear out words that have been removed
34
+ # Clear out words that have been removed (but leave ones that are still present in the new version)
35
35
  (old_metaphones - metaphones).each do |metaphone|
36
36
  remove_urn_from_metaphone_set(urn, metaphone)
37
37
  end
38
38
 
39
- # And add the new ones
39
+ # And add the new ones (but don't bother with words that were in the old version or ignored words)
40
40
  (metaphones - old_metaphones).each do |metaphone|
41
41
  add_urn_to_metaphone_set(urn, metaphone)
42
42
  end
@@ -47,8 +47,8 @@ module Rifle
47
47
  end
48
48
 
49
49
  def search_for(sentence, urns_only)
50
- words = get_words_from_text(sentence)
51
- metaphones = get_metaphones(words)
50
+ words = get_words_array_from_text(sentence)
51
+ metaphones = get_metaphones_from_word_set(Set.new(words))
52
52
  urns = Set.new
53
53
  metaphones.each do |metaphone|
54
54
  new_urns = get_urns_for_metaphone(metaphone)
@@ -66,39 +66,40 @@ module Rifle
66
66
  end
67
67
  end
68
68
 
69
- private
70
-
71
- def remove_old(urn)
72
-
73
- end
74
-
75
- def traverse_object(input, words = nil)
76
- words ||= Set.new
69
+ def traverse_object_for_word_set(input)
70
+ words = Set.new
77
71
  examine_value(input, words)
78
72
  words
79
73
  end
80
74
 
81
75
  def examine_value(value, words)
82
76
  if value.is_a? Hash
83
- value.each do |k, v|
84
- examine_value(v, words)
77
+ (value.keys - Rifle.settings.ignored_keys).each do |k|
78
+ examine_value(value[k], words)
85
79
  end
86
80
  elsif value.is_a? Array
87
81
  value.each do |a|
88
82
  examine_value(a, words)
89
83
  end
90
84
  else
91
- words.add(get_words_from_text(value))
85
+ words.merge(get_words_array_from_text(value))
92
86
  end
93
87
  end
94
88
 
95
- def get_words_from_text(text)
89
+ def get_words_array_from_text(text)
96
90
  return [] if !text.is_a?(String)
97
- words = text.downcase.split(/[^a-zA-Z]/).select { |w| w.length >= Rifle.settings.min_word_length }
98
- return words - Rifle.settings.ignored_words
91
+ words = text.downcase.split(/[^a-zA-Z0-9]/).select { |w| w.length >= Rifle.settings.min_word_length }
92
+ return words
99
93
  end
100
94
 
101
- def get_metaphones(words)
95
+ def get_metaphones_from_word_set(words)
96
+ # Get just text words (no numbers)
97
+ words.keep_if { |w|
98
+ w.to_f == 0
99
+ }
100
+ # Removed ignored words
101
+ words.subtract Rifle.settings.ignored_words
102
+ # Get metaphones
102
103
  ::Text::Metaphone.metaphone(words.to_a.join(' ')).split(' ')
103
104
  end
104
105
 
@@ -1,12 +1,16 @@
1
1
  module Rifle
2
2
 
3
3
  class Settings
4
- attr_accessor :ignored_words, :min_word_length, :redis, :use_rest_server, :resque_queue
4
+ attr_accessor :ignored_words, :ignored_keys, :min_word_length, :redis, :use_rest_server, :resque_queue
5
5
 
6
6
  def ignored_words
7
7
  @ignored_words ||= ["the", "and", "you", "that"]
8
8
  end
9
9
 
10
+ def ignored_keys
11
+ @ignored_keys ||= [:created_at, :updated_at]
12
+ end
13
+
10
14
  def min_word_length
11
15
  @min_word_length ||= 3
12
16
  end
data/lib/rifle/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rifle
2
- VERSION = '0.0.9'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rifle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-15 00:00:00.000000000 Z
12
+ date: 2012-08-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails