mongoid-searchable 0.1.0 → 0.1.1
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/README.md +3 -1
- data/lib/mongoid/searchable/version.rb +1 -1
- data/lib/mongoid/searchable.rb +8 -8
- metadata +13 -13
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
Mongoid Searchable provides simple field search for your Mongoid models using the full-text search technique described in the [MongoDB documentation](http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo).
|
4
4
|
|
5
|
+
[](http://travis-ci.org/jcoene/mongoid-searchable)
|
6
|
+
|
5
7
|
## Getting Started
|
6
8
|
|
7
9
|
First, add mongoid-searchable to your Gemfile:
|
@@ -94,4 +96,4 @@ If you find the project useful but it doesn't meet all of your needs, feel free
|
|
94
96
|
|
95
97
|
## License
|
96
98
|
|
97
|
-
MIT license, go wild.
|
99
|
+
MIT license, go wild.
|
data/lib/mongoid/searchable.rb
CHANGED
@@ -26,7 +26,7 @@ module Mongoid
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def search(query, options={})
|
29
|
-
keywords = query
|
29
|
+
keywords = clean_keywords(query)
|
30
30
|
options[:match] ||= :all
|
31
31
|
options[:exact] ||= false
|
32
32
|
|
@@ -44,22 +44,18 @@ module Mongoid
|
|
44
44
|
elsif options[:match].to_sym == :any
|
45
45
|
any_in(keywords_field.to_sym => match)
|
46
46
|
else
|
47
|
-
|
47
|
+
raise "Please specify either :all or :any to match."
|
48
48
|
end
|
49
49
|
else
|
50
50
|
where()
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
end
|
55
|
-
|
56
|
-
module InstanceMethods
|
57
|
-
|
58
54
|
def clean_keywords(value)
|
59
55
|
words = []
|
60
56
|
|
61
57
|
if value.is_a?(String) or value.is_a?(Numeric)
|
62
|
-
words << value.to_s.split(' ').map { |s| s.
|
58
|
+
words << value.to_s.downcase.gsub(/<\/?[^>]*>/, '').split(' ').map { |s| s.gsub(/[._:;'"`,?|+={}()!@#%^&*<>~\$\-\\\/\[\]]/, '') }.select { |s| s.length >= 2 }
|
63
59
|
elsif value.is_a?(Array) && value.any?
|
64
60
|
value.each do |v|
|
65
61
|
words << clean_keywords(v)
|
@@ -73,10 +69,14 @@ module Mongoid
|
|
73
69
|
words.flatten.uniq
|
74
70
|
end
|
75
71
|
|
72
|
+
end
|
73
|
+
|
74
|
+
module InstanceMethods
|
75
|
+
|
76
76
|
def build_keywords
|
77
77
|
keywords = []
|
78
78
|
self.class.searchable_fields.each do |f|
|
79
|
-
keywords << clean_keywords(send("#{f}"))
|
79
|
+
keywords << self.class.clean_keywords(send("#{f}"))
|
80
80
|
end
|
81
81
|
write_attribute(self.class.keywords_field, keywords.flatten.uniq)
|
82
82
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-searchable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-09-08 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement: &
|
16
|
+
requirement: &70175576163600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70175576163600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bson_ext
|
27
|
-
requirement: &
|
27
|
+
requirement: &70175576162920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.3'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70175576162920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: growl
|
38
|
-
requirement: &
|
38
|
+
requirement: &70175576162320 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70175576162320
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70175576161360 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.9.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70175576161360
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &70175576160100 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '2.6'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70175576160100
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: guard-rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &70175576159400 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: 0.4.3
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70175576159400
|
80
80
|
description: Mongoid Searchable allows you to easily perform full-text search your
|
81
81
|
Mongoid models.
|
82
82
|
email:
|