komainu 0.0.4 → 0.0.5
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/komainu/searches_text.rb +11 -2
- data/lib/komainu/version.rb +1 -1
- data/spec/komainu/searches_text_spec.rb +13 -1
- metadata +4 -4
@@ -26,11 +26,20 @@ module Komainu
|
|
26
26
|
def calculate_suggestion(query)
|
27
27
|
words = split_into_words(@data_to_search.map { |searchable| searchable.text }.join(" "))
|
28
28
|
levenshtein = Levenshtein.new(words)
|
29
|
+
|
30
|
+
found_suggestion = false
|
29
31
|
suggestion = split_into_words(query).map do |word|
|
30
32
|
matches = levenshtein.search(word, 2)
|
31
|
-
|
33
|
+
|
34
|
+
if matches.empty? != true && matches.keys.first != word
|
35
|
+
found_suggestion = true
|
36
|
+
matches.sort {|a,b| a[1] <=> b[1]}.first.first
|
37
|
+
else
|
38
|
+
word
|
39
|
+
end
|
32
40
|
end
|
33
|
-
|
41
|
+
|
42
|
+
suggestion.join(" ") if found_suggestion
|
34
43
|
end
|
35
44
|
|
36
45
|
def split_into_words(string)
|
data/lib/komainu/version.rb
CHANGED
@@ -8,7 +8,7 @@ module Komainu
|
|
8
8
|
let :data_to_search do
|
9
9
|
item1 = OpenStruct.new
|
10
10
|
item1.name = :item1
|
11
|
-
item1.text = "This is some text"
|
11
|
+
item1.text = "This is some text."
|
12
12
|
item2 = OpenStruct.new
|
13
13
|
item2.name = :item2
|
14
14
|
item2.text = "Batman has no parents"
|
@@ -37,5 +37,17 @@ module Komainu
|
|
37
37
|
result = subject.search("btman")
|
38
38
|
result.suggestion.must_equal "Batman"
|
39
39
|
end
|
40
|
+
|
41
|
+
it "only suggests an alternate query if the alternate query is different" do
|
42
|
+
result = subject.search("Batman")
|
43
|
+
result.suggestion.must_be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "finds the best suggestion" do
|
47
|
+
item = OpenStruct.new
|
48
|
+
item.text = "helloo hellp"
|
49
|
+
result = SearchesText.new([item]).search("hell")
|
50
|
+
result.suggestion.must_equal "hellp"
|
51
|
+
end
|
40
52
|
end
|
41
53
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: komainu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-23 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
16
|
-
requirement: &
|
16
|
+
requirement: &70315498054880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70315498054880
|
25
25
|
description: ''
|
26
26
|
email:
|
27
27
|
- andrew.vos@gmail.com
|