mongoid_search2 0.3.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/LICENSE +20 -0
  2. data/README.md +121 -0
  3. data/Rakefile +12 -0
  4. data/VERSION +1 -0
  5. data/lib/mongoid_search/log.rb +22 -0
  6. data/lib/mongoid_search/mongoid_search.rb +127 -0
  7. data/lib/mongoid_search/railtie.rb +10 -0
  8. data/lib/mongoid_search/stemmers.rb +26 -0
  9. data/lib/mongoid_search/util.rb +45 -0
  10. data/lib/mongoid_search.rb +4 -0
  11. data/spec/config/ignorelist.yml +2 -0
  12. data/spec/coverage/assets/0.4.5/app.js +66 -0
  13. data/spec/coverage/assets/0.4.5/fancybox/blank.gif +0 -0
  14. data/spec/coverage/assets/0.4.5/fancybox/fancy_close.png +0 -0
  15. data/spec/coverage/assets/0.4.5/fancybox/fancy_loading.png +0 -0
  16. data/spec/coverage/assets/0.4.5/fancybox/fancy_nav_left.png +0 -0
  17. data/spec/coverage/assets/0.4.5/fancybox/fancy_nav_right.png +0 -0
  18. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_e.png +0 -0
  19. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_n.png +0 -0
  20. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_ne.png +0 -0
  21. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_nw.png +0 -0
  22. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_s.png +0 -0
  23. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_se.png +0 -0
  24. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_sw.png +0 -0
  25. data/spec/coverage/assets/0.4.5/fancybox/fancy_shadow_w.png +0 -0
  26. data/spec/coverage/assets/0.4.5/fancybox/fancy_title_left.png +0 -0
  27. data/spec/coverage/assets/0.4.5/fancybox/fancy_title_main.png +0 -0
  28. data/spec/coverage/assets/0.4.5/fancybox/fancy_title_over.png +0 -0
  29. data/spec/coverage/assets/0.4.5/fancybox/fancy_title_right.png +0 -0
  30. data/spec/coverage/assets/0.4.5/fancybox/fancybox-x.png +0 -0
  31. data/spec/coverage/assets/0.4.5/fancybox/fancybox-y.png +0 -0
  32. data/spec/coverage/assets/0.4.5/fancybox/fancybox.png +0 -0
  33. data/spec/coverage/assets/0.4.5/fancybox/jquery.fancybox-1.3.1.css +363 -0
  34. data/spec/coverage/assets/0.4.5/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  35. data/spec/coverage/assets/0.4.5/favicon.png +0 -0
  36. data/spec/coverage/assets/0.4.5/jquery-1.4.2.min.js +155 -0
  37. data/spec/coverage/assets/0.4.5/jquery.dataTables.min.js +152 -0
  38. data/spec/coverage/assets/0.4.5/jquery.timeago.js +141 -0
  39. data/spec/coverage/assets/0.4.5/jquery.url.js +174 -0
  40. data/spec/coverage/assets/0.4.5/loading.gif +0 -0
  41. data/spec/coverage/assets/0.4.5/magnify.png +0 -0
  42. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  43. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  44. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  45. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  46. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  47. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  48. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  49. data/spec/coverage/assets/0.4.5/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  50. data/spec/coverage/assets/0.4.5/smoothness/images/ui-icons_222222_256x240.png +0 -0
  51. data/spec/coverage/assets/0.4.5/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  52. data/spec/coverage/assets/0.4.5/smoothness/images/ui-icons_454545_256x240.png +0 -0
  53. data/spec/coverage/assets/0.4.5/smoothness/images/ui-icons_888888_256x240.png +0 -0
  54. data/spec/coverage/assets/0.4.5/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  55. data/spec/coverage/assets/0.4.5/smoothness/jquery-ui-1.8.4.custom.css +295 -0
  56. data/spec/coverage/assets/0.4.5/stylesheet.css +341 -0
  57. data/spec/coverage/assets/0.5.3/app.js +88 -0
  58. data/spec/coverage/assets/0.5.3/fancybox/blank.gif +0 -0
  59. data/spec/coverage/assets/0.5.3/fancybox/fancy_close.png +0 -0
  60. data/spec/coverage/assets/0.5.3/fancybox/fancy_loading.png +0 -0
  61. data/spec/coverage/assets/0.5.3/fancybox/fancy_nav_left.png +0 -0
  62. data/spec/coverage/assets/0.5.3/fancybox/fancy_nav_right.png +0 -0
  63. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png +0 -0
  64. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png +0 -0
  65. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png +0 -0
  66. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png +0 -0
  67. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png +0 -0
  68. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png +0 -0
  69. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png +0 -0
  70. data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png +0 -0
  71. data/spec/coverage/assets/0.5.3/fancybox/fancy_title_left.png +0 -0
  72. data/spec/coverage/assets/0.5.3/fancybox/fancy_title_main.png +0 -0
  73. data/spec/coverage/assets/0.5.3/fancybox/fancy_title_over.png +0 -0
  74. data/spec/coverage/assets/0.5.3/fancybox/fancy_title_right.png +0 -0
  75. data/spec/coverage/assets/0.5.3/fancybox/fancybox-x.png +0 -0
  76. data/spec/coverage/assets/0.5.3/fancybox/fancybox-y.png +0 -0
  77. data/spec/coverage/assets/0.5.3/fancybox/fancybox.png +0 -0
  78. data/spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css +363 -0
  79. data/spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  80. data/spec/coverage/assets/0.5.3/favicon_green.png +0 -0
  81. data/spec/coverage/assets/0.5.3/favicon_red.png +0 -0
  82. data/spec/coverage/assets/0.5.3/favicon_yellow.png +0 -0
  83. data/spec/coverage/assets/0.5.3/highlight.css +129 -0
  84. data/spec/coverage/assets/0.5.3/highlight.pack.js +1 -0
  85. data/spec/coverage/assets/0.5.3/jquery-1.6.2.min.js +18 -0
  86. data/spec/coverage/assets/0.5.3/jquery.dataTables.min.js +152 -0
  87. data/spec/coverage/assets/0.5.3/jquery.timeago.js +141 -0
  88. data/spec/coverage/assets/0.5.3/jquery.url.js +174 -0
  89. data/spec/coverage/assets/0.5.3/loading.gif +0 -0
  90. data/spec/coverage/assets/0.5.3/magnify.png +0 -0
  91. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  92. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  93. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  94. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  95. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  96. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  97. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  98. data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  99. data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png +0 -0
  100. data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  101. data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png +0 -0
  102. data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png +0 -0
  103. data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  104. data/spec/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css +295 -0
  105. data/spec/coverage/assets/0.5.3/stylesheet.css +383 -0
  106. data/spec/coverage/index.html +702 -0
  107. data/spec/coverage/resultset.yml +631 -0
  108. data/spec/models/category.rb +6 -0
  109. data/spec/models/product.rb +13 -0
  110. data/spec/models/subproduct.rb +8 -0
  111. data/spec/models/tag.rb +6 -0
  112. data/spec/models/variant.rb +4 -0
  113. data/spec/mongoid_search_spec.rb +161 -0
  114. data/spec/spec_helper.rb +34 -0
  115. data/spec/util_spec.rb +62 -0
  116. metadata +343 -0
@@ -0,0 +1,161 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
4
+
5
+ describe Mongoid::Search do
6
+
7
+ before(:each) do
8
+ Product.stem_keywords = false
9
+ Product.ignore_list = nil
10
+ @product = Product.create :brand => "Apple",
11
+ :name => "iPhone",
12
+ :tags => ["Amazing", "Awesome", "Olé"].map { |tag| Tag.new(:name => tag) },
13
+ :category => Category.new(:name => "Mobile"),
14
+ :subproducts => [Subproduct.new(:brand => "Apple", :name => "Craddle")]
15
+ end
16
+
17
+ context "utf-8 characters" do
18
+ before(:each) {
19
+ Product.stem_keywords = false
20
+ Product.ignore_list = nil
21
+ @product = Product.create :brand => "Эльбрус",
22
+ :name => "Процессор",
23
+ :tags => ["Amazing", "Awesome", "Olé"].map { |tag| Tag.new(:name => tag) },
24
+ :category => Category.new(:name => "процессоры"),
25
+ :subproducts => []
26
+ }
27
+
28
+ it "should leave utf8 characters" do
29
+ @product._keywords.should == ["amazing", "awesome", "ole", "процессор", "процессоры", "эльбрус"]
30
+ end
31
+
32
+ it "should return results in search when case doesn't match" do
33
+ Product.search("ЭЛЬБРУС").size.should == 1
34
+ end
35
+ end
36
+
37
+ context "when references are nil" do
38
+ context "when instance is being created" do
39
+ it "should not complain about method missing" do
40
+ lambda { Product.create! }.should_not raise_error
41
+ end
42
+ end
43
+
44
+ subject { Product.create :brand => "Apple", :name => "iPhone" }
45
+
46
+ its(:_keywords) { should == ["apple", "iphone"] }
47
+ end
48
+
49
+ it "should set the _keywords field for array fields also" do
50
+ @product.attrs = ['lightweight', 'plastic', :red]
51
+ @product.save!
52
+ @product._keywords.should include 'lightweight', 'plastic', 'red'
53
+ end
54
+
55
+ it "should inherit _keywords field and build upon" do
56
+ variant = Variant.create :brand => "Apple",
57
+ :name => "iPhone",
58
+ :tags => ["Amazing", "Awesome", "Olé"].map { |tag| Tag.new(:name => tag) },
59
+ :category => Category.new(:name => "Mobile"),
60
+ :subproducts => [Subproduct.new(:brand => "Apple", :name => "Craddle")],
61
+ :color => :white
62
+ variant._keywords.should include 'white'
63
+ Variant.search(:name => 'Apple', :color => :white).should eq [variant]
64
+ end
65
+
66
+ it "should set the _keywords field with stemmed words if stem is enabled" do
67
+ Product.stem_keywords = true
68
+ @product.save!
69
+ @product._keywords.should == ["amaz", "appl", "awesom", "craddl", "iphon", "mobil", "ol"]
70
+ end
71
+
72
+ it "should ignore keywords in an ignore list" do
73
+ Product.ignore_list = YAML.load(File.open(File.dirname(__FILE__) + '/config/ignorelist.yml'))["ignorelist"]
74
+ @product.save!
75
+ @product._keywords.should == ["apple", "craddle", "iphone", "mobile", "ole"]
76
+ end
77
+
78
+ it "should incorporate numbers as keywords" do
79
+ @product = Product.create :brand => "Ford",
80
+ :name => "T 1908",
81
+ :tags => ["Amazing", "First", "Car"].map { |tag| Tag.new(:name => tag) },
82
+ :category => Category.new(:name => "Vehicle")
83
+
84
+ @product.save!
85
+ @product._keywords.should == ["1908","amazing", "car", "first", "ford", "vehicle"]
86
+ end
87
+
88
+
89
+ it "should return results in search" do
90
+ Product.search("apple").size.should == 1
91
+ end
92
+
93
+ it "should return results in search for dynamic attribute" do
94
+ @product[:outlet] = "online shop"
95
+ @product.save!
96
+ Product.search("online").size.should == 1
97
+ end
98
+
99
+ it "should return results in search even searching a accented word" do
100
+ Product.search("Ole").size.should == 1
101
+ Product.search("Olé").size.should == 1
102
+ end
103
+
104
+ it "should return results in search even if the case doesn't match" do
105
+ Product.search("oLe").size.should == 1
106
+ end
107
+
108
+ it "should return results in search with a partial word" do
109
+ Product.search("iph").size.should == 1
110
+ end
111
+
112
+ it "should return results for any matching word with default search" do
113
+ Product.search("apple motorola").size.should == 1
114
+ end
115
+
116
+ it "should not return results when all words do not match, if using :match => :all" do
117
+ Product.match = :all
118
+ Product.search("apple motorola").size.should == 0
119
+ end
120
+
121
+ it "should return results for any matching word, using :match => :all, passing :match => :any to .search" do
122
+ Product.match = :all
123
+ Product.search("apple motorola", :match => :any).size.should == 1
124
+ end
125
+
126
+ it "should not return results when all words do not match, passing :match => :all to .search" do
127
+ Product.search("apple motorola", :match => :all).size.should == 0
128
+ end
129
+
130
+ it "should return no results when a blank search is made" do
131
+ Product.search("").size.should == 0
132
+ end
133
+
134
+ it "should return results when a blank search is made when :allow_empty_search is true" do
135
+ Product.allow_empty_search = true
136
+ Product.search("").size.should == 1
137
+ end
138
+
139
+ it "should search for embedded documents" do
140
+ Product.search("craddle").size.should == 1
141
+ end
142
+
143
+ it 'should work in a chainable fashion' do
144
+ @product.category.products.where(:brand => 'Apple').csearch('apple').size.should == 1
145
+ @product.category.products.csearch('craddle').where(:brand => 'Apple').size.should == 1
146
+ end
147
+
148
+ it 'should return the classes that include the search module' do
149
+ Mongoid::Search.classes.should == [Product]
150
+ end
151
+
152
+ it 'should have a method to index keywords' do
153
+ @product.index_keywords!.should == true
154
+ end
155
+
156
+ it 'should have a class method to index all documents keywords' do
157
+ Product.index_keywords!.should_not include(false)
158
+ end
159
+
160
+
161
+ end
@@ -0,0 +1,34 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ require 'mongoid'
7
+ require 'database_cleaner'
8
+ require 'fast_stemmer'
9
+ require 'yaml'
10
+ require 'mongoid_search'
11
+ require "lingua/stemmer"
12
+
13
+ Mongoid.configure do |config|
14
+ name = "mongoid_search_test"
15
+ config.master = Mongo::Connection.new.db(name)
16
+ end
17
+
18
+ Dir["#{File.dirname(__FILE__)}/models/*.rb"].each { |file| require file }
19
+
20
+ DatabaseCleaner.orm = :mongoid
21
+
22
+ RSpec.configure do |config|
23
+ config.before(:all) do
24
+ DatabaseCleaner.strategy = :truncation
25
+ end
26
+
27
+ config.before(:each) do
28
+ DatabaseCleaner.start
29
+ end
30
+
31
+ config.after(:each) do
32
+ DatabaseCleaner.clean
33
+ end
34
+ end
data/spec/util_spec.rb ADDED
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe MongoidSearch::Util do
5
+ Util = MongoidSearch::Util
6
+
7
+ it "should return an empty array if no text is passed" do
8
+ Util.normalize_keywords("", false, "").should == []
9
+ end
10
+
11
+ it "should return an array of keywords" do
12
+ Util.normalize_keywords("keyword", false, "").class.should == Array
13
+ end
14
+
15
+ it "should return an array of strings" do
16
+ Util.normalize_keywords("keyword", false, "").first.class.should == String
17
+ end
18
+
19
+ it "should remove accents from the text passed" do
20
+ Util.normalize_keywords("café", false, "").should == ["cafe"]
21
+ end
22
+
23
+ it "should downcase the text passed" do
24
+ Util.normalize_keywords("CaFé", false, "").should == ["cafe"]
25
+ end
26
+
27
+ it "should downcase utf-8 chars of the text passed" do
28
+ Util.normalize_keywords("Кафе", false, "").should == ["кафе"]
29
+ end
30
+
31
+ it "should split whitespaces, hifens, dots, underlines, etc.." do
32
+ Util.normalize_keywords("CaFé-express.com delicious;come visit, and 'win' an \"iPad\"", false, "").should == ["cafe", "express", "com", "delicious", "come", "visit", "and", "win", "an", "ipad"]
33
+ end
34
+
35
+ it "should stem keywords" do
36
+ Util.normalize_keywords("A runner running and eating", MongoidSearch::FastStemmer.new, "").should == ["runner", "run", "and", "eat"]
37
+ end
38
+
39
+ it "should stem keywords with ruby-stemmer" do
40
+ Util.normalize_keywords("A runner running and eating", MongoidSearch::LinguaStemmer.new, "").should == ["runner", "run", "and", "eat"]
41
+ end
42
+
43
+ it "should stem russian keywords" do
44
+ Util.normalize_keywords('Города в России бывают очень красивыми', MongoidSearch::LinguaStemmer.new(:language => 'ru'), "").should == %w( город росс быва очен красив )
45
+ end
46
+
47
+ it "should not stem unsupported-language keywords with ruby-stemmer" do
48
+ Util.normalize_keywords("Bakı", MongoidSearch::LinguaStemmer.new(:language => 'az'), "").should == ["bakı"]
49
+ end
50
+
51
+ it "should ignore keywords from ignore list" do
52
+ Util.normalize_keywords("An amazing awesome runner running and eating", MongoidSearch::FastStemmer.new, YAML.load(File.open(File.dirname(__FILE__) + '/config/ignorelist.yml'))["ignorelist"]).should == ["an", "runner", "run", "and", "eat"]
53
+ end
54
+
55
+ it "should ignore keywords with less than two words" do
56
+ Util.normalize_keywords("A runner running", false, "").should_not include "a"
57
+ end
58
+
59
+ it "should not ignore numbers" do
60
+ Util.normalize_keywords("Ford T 1908", false, "").should include "1908"
61
+ end
62
+ end
metadata ADDED
@@ -0,0 +1,343 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mongoid_search2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0.beta.1
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Mauricio Zaffari
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mongoid
16
+ requirement: &70366081637700 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70366081637700
25
+ - !ruby/object:Gem::Dependency
26
+ name: bson_ext
27
+ requirement: &70366081636920 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '1.2'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70366081636920
36
+ - !ruby/object:Gem::Dependency
37
+ name: fast-stemmer
38
+ requirement: &70366081718420 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70366081718420
47
+ - !ruby/object:Gem::Dependency
48
+ name: ruby-stemmer
49
+ requirement: &70366081717600 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.3
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70366081717600
58
+ - !ruby/object:Gem::Dependency
59
+ name: database_cleaner
60
+ requirement: &70366081717020 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 0.6.4
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70366081717020
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: &70366081715560 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 0.8.7
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70366081715560
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec
82
+ requirement: &70366081714040 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: '2.4'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70366081714040
91
+ description: Simple full text search implementation.
92
+ email:
93
+ - mauricio@papodenerd.net
94
+ executables: []
95
+ extensions: []
96
+ extra_rdoc_files: []
97
+ files:
98
+ - lib/mongoid_search/log.rb
99
+ - lib/mongoid_search/mongoid_search.rb
100
+ - lib/mongoid_search/railtie.rb
101
+ - lib/mongoid_search/stemmers.rb
102
+ - lib/mongoid_search/util.rb
103
+ - lib/mongoid_search.rb
104
+ - LICENSE
105
+ - README.md
106
+ - Rakefile
107
+ - VERSION
108
+ - spec/config/ignorelist.yml
109
+ - spec/coverage/assets/0.4.5/app.js
110
+ - spec/coverage/assets/0.4.5/fancybox/blank.gif
111
+ - spec/coverage/assets/0.4.5/fancybox/fancy_close.png
112
+ - spec/coverage/assets/0.4.5/fancybox/fancy_loading.png
113
+ - spec/coverage/assets/0.4.5/fancybox/fancy_nav_left.png
114
+ - spec/coverage/assets/0.4.5/fancybox/fancy_nav_right.png
115
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_e.png
116
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_n.png
117
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_ne.png
118
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_nw.png
119
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_s.png
120
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_se.png
121
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_sw.png
122
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_w.png
123
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_left.png
124
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_main.png
125
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_over.png
126
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_right.png
127
+ - spec/coverage/assets/0.4.5/fancybox/fancybox-x.png
128
+ - spec/coverage/assets/0.4.5/fancybox/fancybox-y.png
129
+ - spec/coverage/assets/0.4.5/fancybox/fancybox.png
130
+ - spec/coverage/assets/0.4.5/fancybox/jquery.fancybox-1.3.1.css
131
+ - spec/coverage/assets/0.4.5/fancybox/jquery.fancybox-1.3.1.pack.js
132
+ - spec/coverage/assets/0.4.5/favicon.png
133
+ - spec/coverage/assets/0.4.5/jquery-1.4.2.min.js
134
+ - spec/coverage/assets/0.4.5/jquery.dataTables.min.js
135
+ - spec/coverage/assets/0.4.5/jquery.timeago.js
136
+ - spec/coverage/assets/0.4.5/jquery.url.js
137
+ - spec/coverage/assets/0.4.5/loading.gif
138
+ - spec/coverage/assets/0.4.5/magnify.png
139
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
140
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
141
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
142
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
143
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_75_dadada_1x400.png
144
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
145
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
146
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
147
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_222222_256x240.png
148
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_2e83ff_256x240.png
149
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_454545_256x240.png
150
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_888888_256x240.png
151
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_cd0a0a_256x240.png
152
+ - spec/coverage/assets/0.4.5/smoothness/jquery-ui-1.8.4.custom.css
153
+ - spec/coverage/assets/0.4.5/stylesheet.css
154
+ - spec/coverage/assets/0.5.3/app.js
155
+ - spec/coverage/assets/0.5.3/fancybox/blank.gif
156
+ - spec/coverage/assets/0.5.3/fancybox/fancy_close.png
157
+ - spec/coverage/assets/0.5.3/fancybox/fancy_loading.png
158
+ - spec/coverage/assets/0.5.3/fancybox/fancy_nav_left.png
159
+ - spec/coverage/assets/0.5.3/fancybox/fancy_nav_right.png
160
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png
161
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png
162
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png
163
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png
164
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png
165
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png
166
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png
167
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png
168
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_left.png
169
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_main.png
170
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_over.png
171
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_right.png
172
+ - spec/coverage/assets/0.5.3/fancybox/fancybox-x.png
173
+ - spec/coverage/assets/0.5.3/fancybox/fancybox-y.png
174
+ - spec/coverage/assets/0.5.3/fancybox/fancybox.png
175
+ - spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css
176
+ - spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js
177
+ - spec/coverage/assets/0.5.3/favicon_green.png
178
+ - spec/coverage/assets/0.5.3/favicon_red.png
179
+ - spec/coverage/assets/0.5.3/favicon_yellow.png
180
+ - spec/coverage/assets/0.5.3/highlight.css
181
+ - spec/coverage/assets/0.5.3/highlight.pack.js
182
+ - spec/coverage/assets/0.5.3/jquery-1.6.2.min.js
183
+ - spec/coverage/assets/0.5.3/jquery.dataTables.min.js
184
+ - spec/coverage/assets/0.5.3/jquery.timeago.js
185
+ - spec/coverage/assets/0.5.3/jquery.url.js
186
+ - spec/coverage/assets/0.5.3/loading.gif
187
+ - spec/coverage/assets/0.5.3/magnify.png
188
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
189
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
190
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
191
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
192
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png
193
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
194
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
195
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
196
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png
197
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png
198
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png
199
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png
200
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png
201
+ - spec/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css
202
+ - spec/coverage/assets/0.5.3/stylesheet.css
203
+ - spec/coverage/index.html
204
+ - spec/coverage/resultset.yml
205
+ - spec/models/category.rb
206
+ - spec/models/product.rb
207
+ - spec/models/subproduct.rb
208
+ - spec/models/tag.rb
209
+ - spec/models/variant.rb
210
+ - spec/mongoid_search_spec.rb
211
+ - spec/spec_helper.rb
212
+ - spec/util_spec.rb
213
+ homepage: http://www.papodenerd.net/mongoid-search-full-text-search-for-your-mongoid-models/
214
+ licenses: []
215
+ post_install_message:
216
+ rdoc_options: []
217
+ require_paths:
218
+ - lib
219
+ required_ruby_version: !ruby/object:Gem::Requirement
220
+ none: false
221
+ requirements:
222
+ - - ! '>='
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ required_rubygems_version: !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: 1.3.6
231
+ requirements: []
232
+ rubyforge_project:
233
+ rubygems_version: 1.8.15
234
+ signing_key:
235
+ specification_version: 3
236
+ summary: Search implementation for Mongoid ORM
237
+ test_files:
238
+ - spec/config/ignorelist.yml
239
+ - spec/coverage/assets/0.4.5/app.js
240
+ - spec/coverage/assets/0.4.5/fancybox/blank.gif
241
+ - spec/coverage/assets/0.4.5/fancybox/fancy_close.png
242
+ - spec/coverage/assets/0.4.5/fancybox/fancy_loading.png
243
+ - spec/coverage/assets/0.4.5/fancybox/fancy_nav_left.png
244
+ - spec/coverage/assets/0.4.5/fancybox/fancy_nav_right.png
245
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_e.png
246
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_n.png
247
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_ne.png
248
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_nw.png
249
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_s.png
250
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_se.png
251
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_sw.png
252
+ - spec/coverage/assets/0.4.5/fancybox/fancy_shadow_w.png
253
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_left.png
254
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_main.png
255
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_over.png
256
+ - spec/coverage/assets/0.4.5/fancybox/fancy_title_right.png
257
+ - spec/coverage/assets/0.4.5/fancybox/fancybox-x.png
258
+ - spec/coverage/assets/0.4.5/fancybox/fancybox-y.png
259
+ - spec/coverage/assets/0.4.5/fancybox/fancybox.png
260
+ - spec/coverage/assets/0.4.5/fancybox/jquery.fancybox-1.3.1.css
261
+ - spec/coverage/assets/0.4.5/fancybox/jquery.fancybox-1.3.1.pack.js
262
+ - spec/coverage/assets/0.4.5/favicon.png
263
+ - spec/coverage/assets/0.4.5/jquery-1.4.2.min.js
264
+ - spec/coverage/assets/0.4.5/jquery.dataTables.min.js
265
+ - spec/coverage/assets/0.4.5/jquery.timeago.js
266
+ - spec/coverage/assets/0.4.5/jquery.url.js
267
+ - spec/coverage/assets/0.4.5/loading.gif
268
+ - spec/coverage/assets/0.4.5/magnify.png
269
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
270
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
271
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
272
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
273
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_75_dadada_1x400.png
274
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
275
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
276
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
277
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_222222_256x240.png
278
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_2e83ff_256x240.png
279
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_454545_256x240.png
280
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_888888_256x240.png
281
+ - spec/coverage/assets/0.4.5/smoothness/images/ui-icons_cd0a0a_256x240.png
282
+ - spec/coverage/assets/0.4.5/smoothness/jquery-ui-1.8.4.custom.css
283
+ - spec/coverage/assets/0.4.5/stylesheet.css
284
+ - spec/coverage/assets/0.5.3/app.js
285
+ - spec/coverage/assets/0.5.3/fancybox/blank.gif
286
+ - spec/coverage/assets/0.5.3/fancybox/fancy_close.png
287
+ - spec/coverage/assets/0.5.3/fancybox/fancy_loading.png
288
+ - spec/coverage/assets/0.5.3/fancybox/fancy_nav_left.png
289
+ - spec/coverage/assets/0.5.3/fancybox/fancy_nav_right.png
290
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png
291
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png
292
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png
293
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png
294
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png
295
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png
296
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png
297
+ - spec/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png
298
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_left.png
299
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_main.png
300
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_over.png
301
+ - spec/coverage/assets/0.5.3/fancybox/fancy_title_right.png
302
+ - spec/coverage/assets/0.5.3/fancybox/fancybox-x.png
303
+ - spec/coverage/assets/0.5.3/fancybox/fancybox-y.png
304
+ - spec/coverage/assets/0.5.3/fancybox/fancybox.png
305
+ - spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css
306
+ - spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js
307
+ - spec/coverage/assets/0.5.3/favicon_green.png
308
+ - spec/coverage/assets/0.5.3/favicon_red.png
309
+ - spec/coverage/assets/0.5.3/favicon_yellow.png
310
+ - spec/coverage/assets/0.5.3/highlight.css
311
+ - spec/coverage/assets/0.5.3/highlight.pack.js
312
+ - spec/coverage/assets/0.5.3/jquery-1.6.2.min.js
313
+ - spec/coverage/assets/0.5.3/jquery.dataTables.min.js
314
+ - spec/coverage/assets/0.5.3/jquery.timeago.js
315
+ - spec/coverage/assets/0.5.3/jquery.url.js
316
+ - spec/coverage/assets/0.5.3/loading.gif
317
+ - spec/coverage/assets/0.5.3/magnify.png
318
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
319
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
320
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
321
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
322
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png
323
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
324
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
325
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
326
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png
327
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png
328
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png
329
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png
330
+ - spec/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png
331
+ - spec/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css
332
+ - spec/coverage/assets/0.5.3/stylesheet.css
333
+ - spec/coverage/index.html
334
+ - spec/coverage/resultset.yml
335
+ - spec/models/category.rb
336
+ - spec/models/product.rb
337
+ - spec/models/subproduct.rb
338
+ - spec/models/tag.rb
339
+ - spec/models/variant.rb
340
+ - spec/mongoid_search_spec.rb
341
+ - spec/spec_helper.rb
342
+ - spec/util_spec.rb
343
+ has_rdoc: