mongoid_fulltext 0.5.5 → 0.5.6
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/VERSION +1 -1
- data/lib/mongoid_fulltext.rb +3 -3
- data/mongoid_fulltext.gemspec +1 -1
- data/spec/mongoid/fulltext_spec.rb +12 -0
- metadata +12 -12
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.6
|
data/lib/mongoid_fulltext.rb
CHANGED
@@ -24,7 +24,7 @@ module Mongoid::FullTextSearch
|
|
24
24
|
|
25
25
|
config = {
|
26
26
|
:alphabet => 'abcdefghijklmnopqrstuvwxyz0123456789 ',
|
27
|
-
:word_separators => "- \n\t",
|
27
|
+
:word_separators => "-_ \n\t",
|
28
28
|
:ngram_width => 3,
|
29
29
|
:max_ngrams_to_search => 6,
|
30
30
|
:apply_prefix_scoring_to_all_words => true,
|
@@ -189,8 +189,8 @@ module Mongoid::FullTextSearch
|
|
189
189
|
str = UnicodeUtils.nfkd(CGI.unescape(str)).gsub(/[^\x00-\x7F]/,'')
|
190
190
|
end
|
191
191
|
|
192
|
-
# Remove any characters that aren't in the alphabet
|
193
|
-
filtered_str = str.mb_chars.to_s.downcase.split('').find_all{ |ch| config[:alphabet][ch] }.join('')
|
192
|
+
# Remove any characters that aren't in the alphabet and aren't word separators
|
193
|
+
filtered_str = str.mb_chars.to_s.downcase.split('').find_all{ |ch| config[:alphabet][ch] or config[:word_separators][ch] }.join('')
|
194
194
|
|
195
195
|
# Figure out how many ngrams to extract from the string. If we can't afford to extract all ngrams,
|
196
196
|
# step over the string in evenly spaced strides to extract ngrams. For example, to extract 3 3-letter
|
data/mongoid_fulltext.gemspec
CHANGED
@@ -410,6 +410,18 @@ module Mongoid
|
|
410
410
|
end
|
411
411
|
end
|
412
412
|
|
413
|
+
context "with various word separators" do
|
414
|
+
let!(:hard_edged_painting) { BasicArtwork.create(:title => "Hard-edged painting") }
|
415
|
+
let!(:edgy_painting) { BasicArtwork.create(:title => "Edgy painting") }
|
416
|
+
let!(:hard_to_find_ledge) { BasicArtwork.create(:title => "Hard to find ledge") }
|
417
|
+
|
418
|
+
it "should treat dashes as word separators, giving a score boost to each dash-separated word" do
|
419
|
+
BasicArtwork.fulltext_search('hard-edged').first.should == hard_edged_painting
|
420
|
+
BasicArtwork.fulltext_search('hard edge').first.should == hard_edged_painting
|
421
|
+
BasicArtwork.fulltext_search('hard edged').first.should == hard_edged_painting
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
413
425
|
context "returning scores" do
|
414
426
|
# Since we return scores, let's make some weak guarantees about what they actually mean
|
415
427
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_fulltext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: unicode_utils
|
17
|
-
requirement: &
|
17
|
+
requirement: &79305610 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *79305610
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: mongoid
|
28
|
-
requirement: &
|
28
|
+
requirement: &79305370 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 2.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *79305370
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bson_ext
|
39
|
-
requirement: &
|
39
|
+
requirement: &79305130 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.3.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *79305130
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rspec
|
50
|
-
requirement: &
|
50
|
+
requirement: &79304890 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 2.5.0
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *79304890
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: jeweler
|
61
|
-
requirement: &
|
61
|
+
requirement: &79304650 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: 1.5.2
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *79304650
|
70
70
|
description: Full-text search for the Mongoid ORM, using n-grams extracted from text
|
71
71
|
email: aaron.windsor@gmail.com
|
72
72
|
executables: []
|
@@ -120,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
120
|
version: '0'
|
121
121
|
segments:
|
122
122
|
- 0
|
123
|
-
hash:
|
123
|
+
hash: 465387827
|
124
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
125
|
none: false
|
126
126
|
requirements:
|