sunspot_rails 2.0.0.pre.120924 → 2.0.0.pre.120925

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.
Files changed (293) hide show
  1. data/.gitignore +6 -10
  2. data/{sunspot_rails/.rspec → .rspec} +0 -0
  3. data/{sunspot_rails/History.txt → History.txt} +0 -0
  4. data/{sunspot/LICENSE → LICENSE} +0 -0
  5. data/{sunspot_rails/MIT-LICENSE → MIT-LICENSE} +0 -0
  6. data/{sunspot_rails/README.rdoc → README.rdoc} +0 -0
  7. data/Rakefile +12 -32
  8. data/{sunspot_rails/TODO → TODO} +0 -0
  9. data/{sunspot_rails/dev_tasks → dev_tasks}/rdoc.rake +0 -0
  10. data/{sunspot_rails/dev_tasks → dev_tasks}/release.rake +0 -0
  11. data/{sunspot_rails/dev_tasks → dev_tasks}/spec.rake +0 -0
  12. data/{sunspot/tasks → dev_tasks}/todo.rake +0 -0
  13. data/{sunspot_rails/gemfiles → gemfiles}/rails-2.3.14 +0 -0
  14. data/{sunspot_rails/gemfiles → gemfiles}/rails-3.0.15 +0 -0
  15. data/{sunspot_rails/gemfiles → gemfiles}/rails-3.1.6 +0 -0
  16. data/{sunspot_rails/gemfiles → gemfiles}/rails-3.2.6 +0 -0
  17. data/{sunspot_rails/generators → generators}/sunspot/sunspot_generator.rb +0 -0
  18. data/{sunspot_rails/generators → generators}/sunspot/templates/sunspot.yml +0 -0
  19. data/{sunspot_rails/install.rb → install.rb} +0 -0
  20. data/{sunspot_rails/lib → lib}/generators/sunspot_rails.rb +0 -0
  21. data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/install_generator.rb +0 -0
  22. data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/templates/config/sunspot.yml +0 -0
  23. data/{sunspot_rails/lib → lib}/sunspot/rails.rb +0 -0
  24. data/{sunspot_rails/lib → lib}/sunspot/rails/adapters.rb +0 -0
  25. data/{sunspot_rails/lib → lib}/sunspot/rails/configuration.rb +0 -0
  26. data/{sunspot_rails/lib → lib}/sunspot/rails/init.rb +0 -0
  27. data/{sunspot_rails/lib → lib}/sunspot/rails/log_subscriber.rb +0 -0
  28. data/{sunspot_rails/lib → lib}/sunspot/rails/railtie.rb +0 -0
  29. data/{sunspot_rails/lib → lib}/sunspot/rails/railties/controller_runtime.rb +0 -0
  30. data/{sunspot_rails/lib → lib}/sunspot/rails/request_lifecycle.rb +0 -0
  31. data/{sunspot_rails/lib → lib}/sunspot/rails/searchable.rb +0 -0
  32. data/{sunspot_rails/lib → lib}/sunspot/rails/server.rb +0 -0
  33. data/{sunspot_rails/lib → lib}/sunspot/rails/solr_instrumentation.rb +0 -0
  34. data/{sunspot_rails/lib → lib}/sunspot/rails/solr_logging.rb +0 -0
  35. data/{sunspot_rails/lib → lib}/sunspot/rails/spec_helper.rb +0 -0
  36. data/{sunspot_rails/lib → lib}/sunspot/rails/stub_session_proxy.rb +0 -0
  37. data/{sunspot_rails/lib → lib}/sunspot/rails/tasks.rb +0 -0
  38. data/{sunspot_rails/lib → lib}/sunspot_rails.rb +0 -0
  39. data/{sunspot_rails/spec → spec}/configuration_spec.rb +0 -0
  40. data/{sunspot_rails/spec → spec}/model_lifecycle_spec.rb +0 -0
  41. data/{sunspot_rails/spec → spec}/model_spec.rb +0 -0
  42. data/{sunspot_rails/spec → spec}/rails_template/app/controllers/application_controller.rb +0 -0
  43. data/{sunspot_rails/spec → spec}/rails_template/app/controllers/posts_controller.rb +0 -0
  44. data/{sunspot_rails/spec → spec}/rails_template/app/models/author.rb +0 -0
  45. data/{sunspot_rails/spec → spec}/rails_template/app/models/blog.rb +0 -0
  46. data/{sunspot_rails/spec → spec}/rails_template/app/models/location.rb +0 -0
  47. data/{sunspot_rails/spec → spec}/rails_template/app/models/photo_post.rb +0 -0
  48. data/{sunspot_rails/spec → spec}/rails_template/app/models/post.rb +0 -0
  49. data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_auto.rb +0 -0
  50. data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_default_scope.rb +0 -0
  51. data/{sunspot_rails/spec → spec}/rails_template/config/boot.rb +0 -0
  52. data/{sunspot_rails/spec → spec}/rails_template/config/preinitializer.rb +0 -0
  53. data/{sunspot_rails/spec → spec}/rails_template/config/routes.rb +0 -0
  54. data/{sunspot_rails/spec → spec}/rails_template/config/sunspot.yml +0 -0
  55. data/{sunspot_rails/spec → spec}/rails_template/db/schema.rb +0 -0
  56. data/{sunspot_rails/spec → spec}/request_lifecycle_spec.rb +0 -0
  57. data/{sunspot_rails/spec → spec}/schema.rb +0 -0
  58. data/{sunspot_rails/spec → spec}/searchable_spec.rb +0 -0
  59. data/{sunspot_rails/spec → spec}/server_spec.rb +0 -0
  60. data/{sunspot_rails/spec → spec}/session_spec.rb +0 -0
  61. data/{sunspot_rails/spec → spec}/shared_examples/indexed_after_save.rb +0 -0
  62. data/{sunspot_rails/spec → spec}/shared_examples/not_indexed_after_save.rb +0 -0
  63. data/{sunspot_rails/spec → spec}/spec_helper.rb +0 -0
  64. data/{sunspot_rails/spec → spec}/stub_session_proxy_spec.rb +0 -0
  65. data/{sunspot_rails/sunspot_rails.gemspec → sunspot_rails.gemspec} +0 -0
  66. metadata +102 -305
  67. data/.travis.yml +0 -35
  68. data/README.md +0 -863
  69. data/ci/travis.sh +0 -67
  70. data/sunspot/.gitignore +0 -13
  71. data/sunspot/Gemfile +0 -5
  72. data/sunspot/History.txt +0 -258
  73. data/sunspot/Rakefile +0 -13
  74. data/sunspot/TODO +0 -13
  75. data/sunspot/lib/light_config.rb +0 -40
  76. data/sunspot/lib/sunspot.rb +0 -579
  77. data/sunspot/lib/sunspot/adapters.rb +0 -349
  78. data/sunspot/lib/sunspot/batcher.rb +0 -62
  79. data/sunspot/lib/sunspot/class_set.rb +0 -23
  80. data/sunspot/lib/sunspot/composite_setup.rb +0 -202
  81. data/sunspot/lib/sunspot/configuration.rb +0 -53
  82. data/sunspot/lib/sunspot/data_extractor.rb +0 -50
  83. data/sunspot/lib/sunspot/dsl.rb +0 -5
  84. data/sunspot/lib/sunspot/dsl/adjustable.rb +0 -47
  85. data/sunspot/lib/sunspot/dsl/field_group.rb +0 -57
  86. data/sunspot/lib/sunspot/dsl/field_query.rb +0 -345
  87. data/sunspot/lib/sunspot/dsl/fields.rb +0 -103
  88. data/sunspot/lib/sunspot/dsl/fulltext.rb +0 -243
  89. data/sunspot/lib/sunspot/dsl/function.rb +0 -27
  90. data/sunspot/lib/sunspot/dsl/functional.rb +0 -44
  91. data/sunspot/lib/sunspot/dsl/more_like_this_query.rb +0 -56
  92. data/sunspot/lib/sunspot/dsl/paginatable.rb +0 -32
  93. data/sunspot/lib/sunspot/dsl/query_facet.rb +0 -36
  94. data/sunspot/lib/sunspot/dsl/restriction.rb +0 -25
  95. data/sunspot/lib/sunspot/dsl/restriction_with_near.rb +0 -160
  96. data/sunspot/lib/sunspot/dsl/scope.rb +0 -214
  97. data/sunspot/lib/sunspot/dsl/search.rb +0 -30
  98. data/sunspot/lib/sunspot/dsl/standard_query.rb +0 -122
  99. data/sunspot/lib/sunspot/field.rb +0 -193
  100. data/sunspot/lib/sunspot/field_factory.rb +0 -129
  101. data/sunspot/lib/sunspot/indexer.rb +0 -136
  102. data/sunspot/lib/sunspot/query.rb +0 -11
  103. data/sunspot/lib/sunspot/query/abstract_field_facet.rb +0 -55
  104. data/sunspot/lib/sunspot/query/bbox.rb +0 -15
  105. data/sunspot/lib/sunspot/query/boost_query.rb +0 -24
  106. data/sunspot/lib/sunspot/query/common_query.rb +0 -96
  107. data/sunspot/lib/sunspot/query/composite_fulltext.rb +0 -36
  108. data/sunspot/lib/sunspot/query/connective.rb +0 -206
  109. data/sunspot/lib/sunspot/query/date_field_facet.rb +0 -14
  110. data/sunspot/lib/sunspot/query/dismax.rb +0 -132
  111. data/sunspot/lib/sunspot/query/field_facet.rb +0 -41
  112. data/sunspot/lib/sunspot/query/field_group.rb +0 -37
  113. data/sunspot/lib/sunspot/query/filter.rb +0 -38
  114. data/sunspot/lib/sunspot/query/function_query.rb +0 -52
  115. data/sunspot/lib/sunspot/query/geo.rb +0 -53
  116. data/sunspot/lib/sunspot/query/geofilt.rb +0 -16
  117. data/sunspot/lib/sunspot/query/highlighting.rb +0 -62
  118. data/sunspot/lib/sunspot/query/more_like_this.rb +0 -61
  119. data/sunspot/lib/sunspot/query/more_like_this_query.rb +0 -12
  120. data/sunspot/lib/sunspot/query/pagination.rb +0 -42
  121. data/sunspot/lib/sunspot/query/query_facet.rb +0 -53
  122. data/sunspot/lib/sunspot/query/range_facet.rb +0 -15
  123. data/sunspot/lib/sunspot/query/restriction.rb +0 -308
  124. data/sunspot/lib/sunspot/query/scope.rb +0 -9
  125. data/sunspot/lib/sunspot/query/sort.rb +0 -109
  126. data/sunspot/lib/sunspot/query/sort_composite.rb +0 -34
  127. data/sunspot/lib/sunspot/query/standard_query.rb +0 -16
  128. data/sunspot/lib/sunspot/query/text_field_boost.rb +0 -17
  129. data/sunspot/lib/sunspot/schema.rb +0 -151
  130. data/sunspot/lib/sunspot/search.rb +0 -9
  131. data/sunspot/lib/sunspot/search/abstract_search.rb +0 -286
  132. data/sunspot/lib/sunspot/search/date_facet.rb +0 -35
  133. data/sunspot/lib/sunspot/search/facet_row.rb +0 -27
  134. data/sunspot/lib/sunspot/search/field_facet.rb +0 -88
  135. data/sunspot/lib/sunspot/search/field_group.rb +0 -70
  136. data/sunspot/lib/sunspot/search/group.rb +0 -54
  137. data/sunspot/lib/sunspot/search/highlight.rb +0 -38
  138. data/sunspot/lib/sunspot/search/hit.rb +0 -150
  139. data/sunspot/lib/sunspot/search/hit_enumerable.rb +0 -68
  140. data/sunspot/lib/sunspot/search/more_like_this_search.rb +0 -31
  141. data/sunspot/lib/sunspot/search/paginated_collection.rb +0 -57
  142. data/sunspot/lib/sunspot/search/query_facet.rb +0 -67
  143. data/sunspot/lib/sunspot/search/range_facet.rb +0 -37
  144. data/sunspot/lib/sunspot/search/standard_search.rb +0 -21
  145. data/sunspot/lib/sunspot/session.rb +0 -262
  146. data/sunspot/lib/sunspot/session_proxy.rb +0 -95
  147. data/sunspot/lib/sunspot/session_proxy/abstract_session_proxy.rb +0 -29
  148. data/sunspot/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +0 -66
  149. data/sunspot/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +0 -89
  150. data/sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb +0 -43
  151. data/sunspot/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb +0 -67
  152. data/sunspot/lib/sunspot/session_proxy/sharding_session_proxy.rb +0 -222
  153. data/sunspot/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +0 -42
  154. data/sunspot/lib/sunspot/session_proxy/thread_local_session_proxy.rb +0 -37
  155. data/sunspot/lib/sunspot/setup.rb +0 -350
  156. data/sunspot/lib/sunspot/text_field_setup.rb +0 -29
  157. data/sunspot/lib/sunspot/type.rb +0 -393
  158. data/sunspot/lib/sunspot/util.rb +0 -252
  159. data/sunspot/lib/sunspot/version.rb +0 -3
  160. data/sunspot/script/console +0 -10
  161. data/sunspot/spec/api/adapters_spec.rb +0 -68
  162. data/sunspot/spec/api/batcher_spec.rb +0 -112
  163. data/sunspot/spec/api/binding_spec.rb +0 -50
  164. data/sunspot/spec/api/class_set_spec.rb +0 -24
  165. data/sunspot/spec/api/hit_enumerable_spec.rb +0 -47
  166. data/sunspot/spec/api/indexer/attributes_spec.rb +0 -149
  167. data/sunspot/spec/api/indexer/batch_spec.rb +0 -72
  168. data/sunspot/spec/api/indexer/dynamic_fields_spec.rb +0 -42
  169. data/sunspot/spec/api/indexer/fixed_fields_spec.rb +0 -57
  170. data/sunspot/spec/api/indexer/fulltext_spec.rb +0 -43
  171. data/sunspot/spec/api/indexer/removal_spec.rb +0 -53
  172. data/sunspot/spec/api/indexer/spec_helper.rb +0 -1
  173. data/sunspot/spec/api/indexer_spec.rb +0 -14
  174. data/sunspot/spec/api/query/advanced_manipulation_examples.rb +0 -35
  175. data/sunspot/spec/api/query/connectives_examples.rb +0 -201
  176. data/sunspot/spec/api/query/dsl_spec.rb +0 -18
  177. data/sunspot/spec/api/query/dynamic_fields_examples.rb +0 -165
  178. data/sunspot/spec/api/query/faceting_examples.rb +0 -497
  179. data/sunspot/spec/api/query/fulltext_examples.rb +0 -313
  180. data/sunspot/spec/api/query/function_spec.rb +0 -79
  181. data/sunspot/spec/api/query/geo_examples.rb +0 -68
  182. data/sunspot/spec/api/query/group_spec.rb +0 -32
  183. data/sunspot/spec/api/query/highlighting_examples.rb +0 -245
  184. data/sunspot/spec/api/query/more_like_this_spec.rb +0 -140
  185. data/sunspot/spec/api/query/ordering_pagination_examples.rb +0 -116
  186. data/sunspot/spec/api/query/scope_examples.rb +0 -275
  187. data/sunspot/spec/api/query/spatial_examples.rb +0 -27
  188. data/sunspot/spec/api/query/spec_helper.rb +0 -1
  189. data/sunspot/spec/api/query/standard_spec.rb +0 -29
  190. data/sunspot/spec/api/query/text_field_scoping_examples.rb +0 -30
  191. data/sunspot/spec/api/query/types_spec.rb +0 -20
  192. data/sunspot/spec/api/search/dynamic_fields_spec.rb +0 -33
  193. data/sunspot/spec/api/search/faceting_spec.rb +0 -360
  194. data/sunspot/spec/api/search/highlighting_spec.rb +0 -69
  195. data/sunspot/spec/api/search/hits_spec.rb +0 -147
  196. data/sunspot/spec/api/search/paginated_collection_spec.rb +0 -36
  197. data/sunspot/spec/api/search/results_spec.rb +0 -72
  198. data/sunspot/spec/api/search/search_spec.rb +0 -23
  199. data/sunspot/spec/api/search/spec_helper.rb +0 -1
  200. data/sunspot/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +0 -85
  201. data/sunspot/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +0 -30
  202. data/sunspot/spec/api/session_proxy/master_slave_session_proxy_spec.rb +0 -41
  203. data/sunspot/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +0 -78
  204. data/sunspot/spec/api/session_proxy/sharding_session_proxy_spec.rb +0 -77
  205. data/sunspot/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +0 -24
  206. data/sunspot/spec/api/session_proxy/spec_helper.rb +0 -9
  207. data/sunspot/spec/api/session_proxy/thread_local_session_proxy_spec.rb +0 -39
  208. data/sunspot/spec/api/session_spec.rb +0 -232
  209. data/sunspot/spec/api/spec_helper.rb +0 -3
  210. data/sunspot/spec/api/sunspot_spec.rb +0 -29
  211. data/sunspot/spec/ext.rb +0 -11
  212. data/sunspot/spec/helpers/indexer_helper.rb +0 -17
  213. data/sunspot/spec/helpers/integration_helper.rb +0 -8
  214. data/sunspot/spec/helpers/mock_session_helper.rb +0 -13
  215. data/sunspot/spec/helpers/query_helper.rb +0 -26
  216. data/sunspot/spec/helpers/search_helper.rb +0 -68
  217. data/sunspot/spec/integration/dynamic_fields_spec.rb +0 -57
  218. data/sunspot/spec/integration/faceting_spec.rb +0 -330
  219. data/sunspot/spec/integration/field_grouping_spec.rb +0 -100
  220. data/sunspot/spec/integration/geospatial_spec.rb +0 -96
  221. data/sunspot/spec/integration/highlighting_spec.rb +0 -44
  222. data/sunspot/spec/integration/indexing_spec.rb +0 -55
  223. data/sunspot/spec/integration/keyword_search_spec.rb +0 -317
  224. data/sunspot/spec/integration/local_search_spec.rb +0 -64
  225. data/sunspot/spec/integration/more_like_this_spec.rb +0 -43
  226. data/sunspot/spec/integration/scoped_search_spec.rb +0 -386
  227. data/sunspot/spec/integration/stored_fields_spec.rb +0 -12
  228. data/sunspot/spec/integration/test_pagination.rb +0 -43
  229. data/sunspot/spec/integration/unicode_spec.rb +0 -15
  230. data/sunspot/spec/mocks/adapters.rb +0 -33
  231. data/sunspot/spec/mocks/blog.rb +0 -3
  232. data/sunspot/spec/mocks/comment.rb +0 -21
  233. data/sunspot/spec/mocks/connection.rb +0 -126
  234. data/sunspot/spec/mocks/mock_adapter.rb +0 -30
  235. data/sunspot/spec/mocks/mock_class_sharding_session_proxy.rb +0 -24
  236. data/sunspot/spec/mocks/mock_record.rb +0 -52
  237. data/sunspot/spec/mocks/mock_sharding_session_proxy.rb +0 -15
  238. data/sunspot/spec/mocks/photo.rb +0 -11
  239. data/sunspot/spec/mocks/post.rb +0 -86
  240. data/sunspot/spec/mocks/super_class.rb +0 -2
  241. data/sunspot/spec/mocks/user.rb +0 -13
  242. data/sunspot/spec/spec_helper.rb +0 -40
  243. data/sunspot/sunspot.gemspec +0 -37
  244. data/sunspot/tasks/rdoc.rake +0 -27
  245. data/sunspot/tasks/schema.rake +0 -19
  246. data/sunspot_rails/.gitignore +0 -7
  247. data/sunspot_rails/LICENSE +0 -18
  248. data/sunspot_rails/Rakefile +0 -17
  249. data/sunspot_rails/dev_tasks/todo.rake +0 -4
  250. data/sunspot_solr/Gemfile +0 -3
  251. data/sunspot_solr/README.rdoc +0 -24
  252. data/sunspot_solr/bin/sunspot-installer +0 -20
  253. data/sunspot_solr/bin/sunspot-solr +0 -80
  254. data/sunspot_solr/lib/sunspot/solr/installer.rb +0 -25
  255. data/sunspot_solr/lib/sunspot/solr/installer/config_installer.rb +0 -46
  256. data/sunspot_solr/lib/sunspot/solr/installer/task_helper.rb +0 -13
  257. data/sunspot_solr/lib/sunspot/solr/java.rb +0 -10
  258. data/sunspot_solr/lib/sunspot/solr/railtie.rb +0 -15
  259. data/sunspot_solr/lib/sunspot/solr/server.rb +0 -223
  260. data/sunspot_solr/lib/sunspot/solr/tasks.rb +0 -49
  261. data/sunspot_solr/lib/sunspot_solr.rb +0 -5
  262. data/sunspot_solr/solr/README.txt +0 -42
  263. data/sunspot_solr/solr/etc/jetty.xml +0 -219
  264. data/sunspot_solr/solr/etc/webdefault.xml +0 -379
  265. data/sunspot_solr/solr/lib/jetty-6.1.26-patched-JETTY-1340.jar +0 -0
  266. data/sunspot_solr/solr/lib/jetty-util-6.1.26-patched-JETTY-1340.jar +0 -0
  267. data/sunspot_solr/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  268. data/sunspot_solr/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  269. data/sunspot_solr/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  270. data/sunspot_solr/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  271. data/sunspot_solr/solr/lib/servlet-api-2.5-20081211.jar +0 -0
  272. data/sunspot_solr/solr/solr/.gitignore +0 -1
  273. data/sunspot_solr/solr/solr/README.txt +0 -54
  274. data/sunspot_solr/solr/solr/conf/admin-extra.html +0 -31
  275. data/sunspot_solr/solr/solr/conf/elevate.xml +0 -36
  276. data/sunspot_solr/solr/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
  277. data/sunspot_solr/solr/solr/conf/protwords.txt +0 -21
  278. data/sunspot_solr/solr/solr/conf/schema.xml +0 -250
  279. data/sunspot_solr/solr/solr/conf/scripts.conf +0 -24
  280. data/sunspot_solr/solr/solr/conf/solrconfig.xml +0 -934
  281. data/sunspot_solr/solr/solr/conf/spellings.txt +0 -2
  282. data/sunspot_solr/solr/solr/conf/stopwords.txt +0 -58
  283. data/sunspot_solr/solr/solr/conf/synonyms.txt +0 -31
  284. data/sunspot_solr/solr/solr/conf/xslt/example.xsl +0 -132
  285. data/sunspot_solr/solr/solr/conf/xslt/example_atom.xsl +0 -67
  286. data/sunspot_solr/solr/solr/conf/xslt/example_rss.xsl +0 -66
  287. data/sunspot_solr/solr/solr/conf/xslt/luke.xsl +0 -337
  288. data/sunspot_solr/solr/start.jar +0 -0
  289. data/sunspot_solr/solr/webapps/solr.war +0 -0
  290. data/sunspot_solr/spec/server_spec.rb +0 -98
  291. data/sunspot_solr/spec/spec_helper.rb +0 -18
  292. data/sunspot_solr/sunspot_solr.gemspec +0 -37
  293. data/tools/gem_tasks.rb +0 -69
@@ -1,100 +0,0 @@
1
- require File.expand_path("../spec_helper", File.dirname(__FILE__))
2
- require File.expand_path("../helpers/search_helper", File.dirname(__FILE__))
3
-
4
- describe "field grouping" do
5
- before :each do
6
- Sunspot.remove_all
7
-
8
- @posts = [
9
- Post.new(:title => "Title1", :ratings_average => 4),
10
- Post.new(:title => "Title1", :ratings_average => 5),
11
- Post.new(:title => "Title2", :ratings_average => 3)
12
- ]
13
-
14
- Sunspot.index!(*@posts)
15
- end
16
-
17
- it "allows grouping by a field" do
18
- search = Sunspot.search(Post) do
19
- group :title
20
- end
21
-
22
- search.group(:title).groups.should include { |g| g.value == "Title1" }
23
- search.group(:title).groups.should include { |g| g.value == "Title2" }
24
- end
25
-
26
- it "returns the number of matches unique groups" do
27
- search = Sunspot.search(Post) do
28
- group :title
29
- end
30
-
31
- search.group(:title).total.should == 2
32
- end
33
-
34
- it "provides access to the number of matches before grouping" do
35
- search = Sunspot.search(Post) do
36
- group :title
37
- end
38
-
39
- search.group(:title).matches.should == @posts.length
40
- end
41
-
42
- it "allows grouping by multiple fields" do
43
- search = Sunspot.search(Post) do
44
- group :title, :sort_title
45
- end
46
-
47
- search.group(:title).groups.should_not be_empty
48
- search.group(:sort_title).groups.should_not be_empty
49
- end
50
-
51
- it "allows specification of the number of documents per group" do
52
- search = Sunspot.search(Post) do
53
- group :title do
54
- limit 2
55
- end
56
- end
57
-
58
- title1_group = search.group(:title).groups.detect { |g| g.value == "Title1" }
59
- title1_group.hits.length.should == 2
60
- end
61
-
62
- it "allows specification of the sort within groups" do
63
- search = Sunspot.search(Post) do
64
- group :title do
65
- order_by(:average_rating, :desc)
66
- end
67
- end
68
-
69
- highest_ranked_post = @posts.sort_by { |p| -p.ratings_average }.first
70
-
71
- title1_group = search.group(:title).groups.detect { |g| g.value == "Title1" }
72
- title1_group.hits.first.primary_key.to_i.should == highest_ranked_post.id
73
- end
74
-
75
- it "allows pagination within groups" do
76
- search = Sunspot.search(Post) do
77
- group :title
78
- paginate :per_page => 1, :page => 2
79
- end
80
-
81
- search.group(:title).groups.length.should eql(1)
82
- search.group(:title).groups.first.results.should == [ @posts.last ]
83
- end
84
-
85
- context "returns a paginated collection" do
86
- subject do
87
- search = Sunspot.search(Post) do
88
- group :title
89
- paginate :per_page => 1, :page => 2
90
- end
91
- search.group(:title).groups
92
- end
93
-
94
- it { subject.per_page.should eql(1) }
95
- it { subject.total_pages.should eql(2) }
96
- it { subject.current_page.should eql(2) }
97
- it { subject.first_page?.should be_false }
98
- it { subject.last_page?.should be_true }
99
- end
100
- end
@@ -1,96 +0,0 @@
1
- require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
-
3
- describe "geospatial search" do
4
- describe "filtering by radius" do
5
- before :all do
6
- Sunspot.remove_all
7
-
8
- @post = Post.new(:title => "Howdy",
9
- :coordinates => Sunspot::Util::Coordinates.new(32, -68))
10
- Sunspot.index!(@post)
11
- end
12
-
13
- it "matches posts within the radius" do
14
- results = Sunspot.search(Post) {
15
- with(:coordinates_new).in_radius(32, -68, 1)
16
- }.results
17
-
18
- results.should include(@post)
19
- end
20
-
21
- it "filters out posts not in the radius" do
22
- results = Sunspot.search(Post) {
23
- with(:coordinates_new).in_radius(33, -68, 1)
24
- }.results
25
-
26
- results.should_not include(@post)
27
- end
28
-
29
- it "allows conjunction queries" do
30
- results = Sunspot.search(Post) {
31
- any_of do
32
- with(:coordinates_new).in_radius(32, -68, 1)
33
- with(:coordinates_new).in_radius(35, 68, 1)
34
- end
35
- }.results
36
-
37
- results.should include(@post)
38
- end
39
- end
40
-
41
- describe "filtering by bounding box" do
42
- before :all do
43
- Sunspot.remove_all
44
-
45
- @post = Post.new(:title => "Howdy",
46
- :coordinates => Sunspot::Util::Coordinates.new(32, -68))
47
- Sunspot.index!(@post)
48
- end
49
-
50
- it "matches post within the bounding box" do
51
- results = Sunspot.search(Post) {
52
- with(:coordinates_new).in_bounding_box [31, -69], [33, -67]
53
- }.results
54
-
55
- results.should include(@post)
56
- end
57
-
58
- it "filters out posts not in the bounding box" do
59
- results = Sunspot.search(Post) {
60
- with(:coordinates_new).in_bounding_box [20, -70], [21, -69]
61
- }.results
62
-
63
- results.should_not include(@post)
64
- end
65
- end
66
-
67
- describe "ordering by geodist" do
68
- before :all do
69
- Sunspot.remove_all
70
-
71
- @posts = [
72
- Post.new(:title => "Howdy", :coordinates => Sunspot::Util::Coordinates.new(34, -68)),
73
- Post.new(:title => "Howdy", :coordinates => Sunspot::Util::Coordinates.new(33, -68)),
74
- Post.new(:title => "Howdy", :coordinates => Sunspot::Util::Coordinates.new(32, -68))
75
- ]
76
-
77
- Sunspot.index!(@posts)
78
- end
79
-
80
- it "orders posts by distance ascending" do
81
- results = Sunspot.search(Post) {
82
- order_by_geodist(:coordinates_new, 32, -68)
83
- }.results
84
-
85
- results.should == @posts.reverse
86
- end
87
-
88
- it "orders posts by distance descending" do
89
- results = Sunspot.search(Post) {
90
- order_by_geodist(:coordinates_new, 32, -68, :desc)
91
- }.results
92
-
93
- results.should == @posts
94
- end
95
- end
96
- end
@@ -1,44 +0,0 @@
1
- require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
-
3
- describe 'keyword highlighting' do
4
- before :all do
5
- @posts = []
6
- @posts << Post.new(:body => 'And the fox laughed')
7
- @posts << Post.new(:body => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', :blog_id => 1)
8
- @posts << Post.new(:body => 'Lorem ipsum dolor sit amet', :title => 'consectetur adipiscing elit', :blog_id => 1)
9
- Sunspot.index!(*@posts)
10
- @search_result = Sunspot.search(Post) { keywords 'fox', :highlight => true }
11
- end
12
-
13
- it 'should include highlights in the results' do
14
- @search_result.hits.first.highlights.length.should == 1
15
- end
16
-
17
- it 'should return formatted highlight fragments' do
18
- @search_result.hits.first.highlights(:body).first.format.should == 'And the <em>fox</em> laughed'
19
- end
20
-
21
- it 'should be empty for non-keyword searches' do
22
- search_result = Sunspot.search(Post){ with :blog_id, 1 }
23
- search_result.hits.first.highlights.should be_empty
24
- end
25
-
26
- it "should process multiple keyword request on different fields with highlights correctly" do
27
- search_results = nil
28
- lambda do
29
- search_results = Sunspot.search(Post) do
30
- keywords 'Lorem ipsum', :fields => [:body] do
31
- highlight :body
32
- end
33
- keywords 'consectetur', :fields => [:title] do
34
- highlight :title
35
- end
36
- end
37
- end.should_not raise_error(RSolr::Error::Http)
38
- search_results.results.length.should eq(1)
39
- search_results.results.first.should eq(@posts.last)
40
- # this one might be a Solr bug, therefore not related to Sunspot itself
41
- # search_results.hits.first.highlights.should_not be_empty
42
- end
43
-
44
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
-
3
- describe 'indexing' do
4
- it 'should index non-multivalued field with newlines' do
5
- lambda do
6
- Sunspot.index!(Post.new(:title => "A\nTitle"))
7
- end.should_not raise_error
8
- end
9
-
10
- it 'should correctly remove by model instance' do
11
- post = Post.new(:title => 'test post')
12
- Sunspot.index!(post)
13
- Sunspot.remove!(post)
14
- Sunspot.search(Post) { with(:title, 'test post') }.results.should be_empty
15
- end
16
-
17
- it 'should correctly delete by ID' do
18
- post = Post.new(:title => 'test post')
19
- Sunspot.index!(post)
20
- Sunspot.remove_by_id!(Post, post.id)
21
- Sunspot.search(Post) { with(:title, 'test post') }.results.should be_empty
22
- end
23
-
24
- it 'removes documents by query' do
25
- Sunspot.remove_all!
26
- posts = [Post.new(:title => 'birds'), Post.new(:title => 'monkeys')]
27
- Sunspot.index!(posts)
28
- Sunspot.remove! do
29
- with(:title, 'birds')
30
- end
31
- Sunspot.search(Post).should have(2).results
32
- end
33
-
34
-
35
- describe "in batches" do
36
- let(:post_1) { Post.new :title => 'A tittle' }
37
- let(:post_2) { Post.new :title => 'Another title' }
38
-
39
- describe "nested" do
40
- let(:a_nested_batch) do
41
- Sunspot.batch do
42
- Sunspot.index post_1
43
-
44
- Sunspot.batch do
45
- Sunspot.index post_2
46
- end
47
- end
48
- end
49
-
50
- it "does not fail" do
51
- expect { a_nested_batch }.to_not raise_error
52
- end
53
- end
54
- end
55
- end
@@ -1,317 +0,0 @@
1
- require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
-
3
- describe 'keyword search' do
4
- describe 'generally' do
5
- before :all do
6
- Sunspot.remove_all
7
- @posts = []
8
- @posts << Post.new(:title => 'The toast elects the insufficient spirit',
9
- :body => 'Does the wind write?')
10
- @posts << Post.new(:title => 'A nail abbreviates the recovering insight outside the moron',
11
- :body => 'The interpreted strain scans the buffer around the upper temper')
12
- @posts << Post.new(:title => 'The toast abbreviates the recovering spirit',
13
- :body => 'Does the host\'s wind interpret the buffer, moron?')
14
- Sunspot.index!(*@posts)
15
- @comment = Namespaced::Comment.new(:body => 'Hey there where ya goin, not exactly knowin, who says you have to call just one place toast.')
16
- Sunspot.index!(@comment)
17
- end
18
-
19
- it 'matches a single keyword out of a single field' do
20
- results = Sunspot.search(Post) { keywords 'toast' }.results
21
- [0, 2].each { |i| results.should include(@posts[i]) }
22
- [1].each { |i| results.should_not include(@posts[i]) }
23
- end
24
-
25
- it 'matches multiple words out of a single field' do
26
- results = Sunspot.search(Post) { keywords 'elects toast' }.results
27
- results.should == [@posts[0]]
28
- end
29
-
30
- it 'matches multiple words in multiple fields' do
31
- results = Sunspot.search(Post) { keywords 'toast wind' }.results
32
- [0, 2].each { |i| results.should include(@posts[i]) }
33
- [1].each { |i| results.should_not include(@posts[i]) }
34
- end
35
-
36
- it 'matches multiple types' do
37
- results = Sunspot.search(Post, Namespaced::Comment) do
38
- keywords 'toast'
39
- end.results
40
- [@posts[0], @posts[2], @comment].each { |obj| results.should include(obj) }
41
- results.should_not include(@posts[1])
42
- end
43
-
44
- it 'matches keywords from only the fields specified' do
45
- results = Sunspot.search(Post) do
46
- keywords 'moron', :fields => [:title]
47
- end.results
48
- results.should == [@posts[1]]
49
- end
50
-
51
- it 'matches multiple keywords on different fields using subqueries' do
52
- search = Sunspot.search(Post) do
53
- keywords 'moron', :fields => [:title]
54
- keywords 'wind', :fields => [:body]
55
- end
56
- search.results.should == []
57
-
58
- search = Sunspot.search(Post) do
59
- keywords 'moron', :fields => [:title]
60
- keywords 'buffer', :fields => [:body]
61
- end
62
- search.results.should == [@posts[1]]
63
- end
64
-
65
- it 'matches multiple keywords with escaped characters' do
66
- search = Sunspot.search(Post) do
67
- keywords 'spirit', :fields => [:title]
68
- keywords 'host\'s', :fields => [:body]
69
- end
70
- search.results.should == [@posts[2]]
71
- end
72
-
73
- it 'matches multiple keywords with phrase-based search' do
74
- search = Sunspot.search(Post) do
75
- keywords 'spirit', :fields => [:title]
76
- keywords '"interpret the buffer"', :fields => [:body]
77
- keywords '"does the"', :fields => [:body]
78
- end
79
- search.results.should == [@posts[2]]
80
- end
81
-
82
- it 'matches multiple keywords different options' do
83
- search = Sunspot.search(Post) do
84
- keywords 'insufficient nonexistent', :fields => [:title], :minimum_match => 1
85
- keywords 'wind does', :fields => [:body], :minimum_match => 2
86
- end
87
- search.results.should == [@posts[0]]
88
- end
89
- end
90
-
91
- describe 'with field boost' do
92
- before :all do
93
- Sunspot.remove_all
94
- @posts = [:title, :body].map { |field| Post.new(field => 'rhinoceros') }
95
- Sunspot.index!(*@posts)
96
- end
97
-
98
- it 'should assign a higher score to the result matching the higher-boosted field' do
99
- search = Sunspot.search(Post) { keywords 'rhinoceros' }
100
- search.hits.map { |hit| hit.primary_key }.should ==
101
- @posts.map { |post| post.id.to_s }
102
- search.hits.first.score.should > search.hits.last.score
103
- end
104
- end
105
-
106
- describe 'with document boost' do
107
- before :all do
108
- Sunspot.remove_all
109
- @posts = [4.0, 2.0].map do |rating|
110
- Post.new(:title => 'Test', :ratings_average => rating)
111
- end
112
- Sunspot.index!(*@posts)
113
- end
114
-
115
- it 'should assign a higher score to the higher-boosted document' do
116
- search = Sunspot.search(Post) { keywords 'test' }
117
- search.hits.map { |hit| hit.primary_key }.should ==
118
- @posts.map { |post| post.id.to_s }
119
- search.hits.first.score.should > search.hits.last.score
120
- end
121
- end
122
-
123
- describe 'with search-time boost' do
124
- before :each do
125
- Sunspot.remove_all
126
- @comments = [
127
- Namespaced::Comment.new(:body => 'test text'),
128
- Namespaced::Comment.new(:author_name => 'test text')
129
- ]
130
- Sunspot.index!(@comments)
131
- end
132
-
133
- it 'assigns a higher score to documents in which all words appear in the phrase field' do
134
- hits = Sunspot.search(Namespaced::Comment) do
135
- keywords 'test text' do
136
- phrase_fields :body => 2.0
137
- end
138
- end.hits
139
- hits.first.instance.should == @comments.first
140
- hits.first.score.should > hits.last.score
141
- end
142
-
143
- it 'assigns a higher score to documents in which the search terms appear in a boosted field' do
144
- hits = Sunspot.search(Namespaced::Comment) do
145
- keywords 'test' do
146
- fields :body => 2.0, :author_name => 0.75
147
- end
148
- end.hits
149
- hits.first.instance.should == @comments.first
150
- hits.first.score.should > hits.last.score
151
- end
152
-
153
- it 'assigns a higher score to documents in which the search terms appear in a higher boosted phrase field' do
154
- hits = Sunspot.search(Namespaced::Comment) do
155
- keywords 'test text' do
156
- phrase_fields :body => 2.0, :author_name => 0.75
157
- end
158
- end.hits
159
- hits.first.instance.should == @comments.first
160
- hits.first.score.should > hits.last.score
161
- end
162
- end
163
-
164
- describe 'boost query' do
165
- before :all do
166
- Sunspot.remove_all
167
- Sunspot.index!(
168
- @posts = [
169
- Post.new(:title => 'Rhino', :featured => true),
170
- Post.new(:title => 'Rhino', :ratings_average => 3.3),
171
- Post.new(:title => 'Rhino')
172
- ]
173
- )
174
- end
175
-
176
- it 'should assign a higher score to the document matching the boost query' do
177
- search = Sunspot.search(Post) do |query|
178
- query.keywords('rhino') do
179
- boost(2.0) do
180
- with(:featured, true)
181
- end
182
- end
183
- query.without(@posts[1])
184
- end
185
- search.results.should == [@posts[0], @posts[2]]
186
- search.hits[0].score.should > search.hits[1].score
187
- end
188
-
189
- it 'should assign scores in order of multiple boost query match' do
190
- search = Sunspot.search(Post) do
191
- keywords 'rhino' do
192
- boost(2.0) { with(:featured, true) }
193
- boost(1.5) { with(:average_rating).greater_than(3.0) }
194
- end
195
- end
196
- search.results.should == @posts
197
- search.hits[0].score.should > search.hits[1].score
198
- search.hits[1].score.should > search.hits[2].score
199
- end
200
- end
201
-
202
- describe 'minimum match' do
203
- before do
204
- Sunspot.remove_all
205
- @posts = [
206
- Post.new(:title => 'Pepperoni Sausage Anchovies'),
207
- Post.new(:title => 'Pepperoni Tomatoes Mushrooms')
208
- ]
209
- Sunspot.index!(@posts)
210
- @search = Sunspot.search(Post) do
211
- keywords 'pepperoni sausage extra cheese', :minimum_match => 2
212
- end
213
- end
214
-
215
- it 'should match documents that contain the minimum_match number of search terms' do
216
- @search.results.should include(@posts[0])
217
- end
218
-
219
- it 'should not match documents that do not contain the minimum_match number of search terms' do
220
- @search.results.should_not include(@posts[1])
221
- end
222
- end
223
-
224
- describe 'query phrase slop' do
225
- before do
226
- Sunspot.remove_all
227
- @posts = [
228
- Post.new(:title => 'One four'),
229
- Post.new(:title => 'One three four'),
230
- Post.new(:title => 'One two three four')
231
- ]
232
- Sunspot.index!(@posts)
233
- @search = Sunspot.search(Post) do
234
- keywords '"one four"', :query_phrase_slop => 1
235
- end
236
- end
237
-
238
- it 'should match exact phrase' do
239
- @search.results.should include(@posts[0])
240
- end
241
-
242
- it 'should match phrase divided by query phrase slop terms' do
243
- @search.results.should include(@posts[1])
244
- end
245
-
246
- it 'should not match phrase divided by more than query phrase slop terms' do
247
- @search.results.should_not include(@posts[2])
248
- end
249
- end
250
-
251
- describe 'phrase field slop' do
252
- before do
253
- Sunspot.remove_all
254
- @comments = [
255
- Namespaced::Comment.new(:author_name => 'one four'),
256
- Namespaced::Comment.new(:body => 'one four'),
257
- Namespaced::Comment.new(:author_name => 'one three four'),
258
- Namespaced::Comment.new(:body => 'one three four'),
259
- Namespaced::Comment.new(:author_name => 'one two three four'),
260
- Namespaced::Comment.new(:body => 'one two three four')
261
- ]
262
- Sunspot.index!(@comments)
263
- @search = Sunspot.search(Namespaced::Comment) do
264
- keywords 'one four' do
265
- phrase_fields :author_name => 3.0
266
- phrase_slop 1
267
- end
268
- end
269
- @sorted_hits = @search.hits.sort_by { |hit| @comments.index(hit.instance) }
270
- end
271
-
272
- it 'should give phrase field boost to exact match' do
273
- @sorted_hits[0].score.should > @sorted_hits[1].score
274
- end
275
-
276
- it 'should give phrase field boost to match within slop' do
277
- @sorted_hits[2].score.should > @sorted_hits[3].score
278
- end
279
-
280
- it 'should not give phrase field boost to match beyond slop' do
281
- @sorted_hits[4].score.should == @sorted_hits[5].score
282
- end
283
- end
284
-
285
- describe 'with function queries' do
286
- before :each do
287
- Sunspot.remove_all
288
- end
289
-
290
- after :each do
291
- @search.results.should == @posts
292
- @search.hits.first.score.should > @search.hits.last.score
293
- end
294
-
295
- it 'boosts via function query with float' do
296
- @posts = [Post.new(:title => 'test', :ratings_average => 4.0),
297
- Post.new(:title => 'test', :ratings_average => 2.0)]
298
- Sunspot.index!(@posts)
299
- @search = Sunspot.search(Post) do
300
- keywords('test') do
301
- boost function { :average_rating }
302
- end
303
- end
304
- end
305
-
306
- it 'boosts via function query with date' do
307
- @posts = [Post.new(:title => 'test', :published_at => Time.now),
308
- Post.new(:title => 'test', :published_at => Time.now - 60*60*24*31*6)] # roughly six months ago
309
- Sunspot.index!(@posts)
310
- @search = Sunspot.search(Post) do
311
- keywords('test') do
312
- boost function { recip(ms(Time.now, :published_at), 3.16e-11, 1, 1) }
313
- end
314
- end
315
- end
316
- end
317
- end