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,136 +0,0 @@
1
- require 'sunspot/batcher'
2
-
3
- module Sunspot
4
- #
5
- # This class presents a service for adding, updating, and removing data
6
- # from the Solr index. An Indexer instance is associated with a particular
7
- # setup, and thus is capable of indexing instances of a certain class (and its
8
- # subclasses).
9
- #
10
- class Indexer #:nodoc:
11
- include RSolr::Char
12
-
13
- def initialize(connection)
14
- @connection = connection
15
- end
16
-
17
- #
18
- # Construct a representation of the model for indexing and send it to the
19
- # connection for indexing
20
- #
21
- # ==== Parameters
22
- #
23
- # model<Object>:: the model to index
24
- #
25
- def add(model)
26
- documents = Util.Array(model).map { |m| prepare(m) }
27
- if batcher.batching?
28
- batcher.concat(documents)
29
- else
30
- add_documents(documents)
31
- end
32
- end
33
-
34
- #
35
- # Remove the given model from the Solr index
36
- #
37
- def remove(*models)
38
- @connection.delete_by_id(
39
- models.map { |model| Adapters::InstanceAdapter.adapt(model).index_id }
40
- )
41
- end
42
-
43
- #
44
- # Remove the model from the Solr index by specifying the class and ID
45
- #
46
- def remove_by_id(class_name, *ids)
47
- @connection.delete_by_id(
48
- ids.map { |id| Adapters::InstanceAdapter.index_id_for(class_name, id) }
49
- )
50
- end
51
-
52
- #
53
- # Delete all documents of the class indexed by this indexer from Solr.
54
- #
55
- def remove_all(clazz = nil)
56
- if clazz
57
- @connection.delete_by_query("type:#{escape(clazz.name)}")
58
- else
59
- @connection.delete_by_query("*:*")
60
- end
61
- end
62
-
63
- #
64
- # Remove all documents that match the scope given in the Query
65
- #
66
- def remove_by_scope(scope)
67
- @connection.delete_by_query(scope.to_boolean_phrase)
68
- end
69
-
70
- #
71
- # Start batch processing
72
- #
73
- def start_batch
74
- batcher.start_new
75
- end
76
-
77
- #
78
- # Write batch out to Solr and clear it
79
- #
80
- def flush_batch
81
- add_documents(batcher.end_current)
82
- end
83
-
84
- private
85
-
86
- def batcher
87
- @batcher ||= Batcher.new
88
- end
89
-
90
- #
91
- # Convert documents into hash of indexed properties
92
- #
93
- def prepare(model)
94
- document = document_for(model)
95
- setup = setup_for(model)
96
- if boost = setup.document_boost_for(model)
97
- document.attrs[:boost] = boost
98
- end
99
- setup.all_field_factories.each do |field_factory|
100
- field_factory.populate_document(document, model)
101
- end
102
- document
103
- end
104
-
105
- def add_documents(documents)
106
- @connection.add(documents)
107
- end
108
-
109
- #
110
- # All indexed documents index and store the +id+ and +type+ fields.
111
- # This method constructs the document hash containing those key-value
112
- # pairs.
113
- #
114
- def document_for(model)
115
- RSolr::Xml::Document.new(
116
- :id => Adapters::InstanceAdapter.adapt(model).index_id,
117
- :type => Util.superclasses_for(model.class).map { |clazz| clazz.name }
118
- )
119
- end
120
-
121
- #
122
- # Get the Setup object for the given object's class.
123
- #
124
- # ==== Parameters
125
- #
126
- # object<Object>:: The object whose setup is to be retrieved
127
- #
128
- # ==== Returns
129
- #
130
- # Sunspot::Setup:: The setup for the object's class
131
- #
132
- def setup_for(object)
133
- Setup.for(object.class) || raise(NoSetupError, "Sunspot is not configured for #{object.class.inspect}")
134
- end
135
- end
136
- end
@@ -1,11 +0,0 @@
1
- %w(filter abstract_field_facet connective boost_query date_field_facet range_facet dismax
2
- field_facet highlighting pagination restriction common_query
3
- standard_query more_like_this more_like_this_query geo geofilt bbox query_facet
4
- scope sort sort_composite text_field_boost function_query
5
- composite_fulltext field_group).each do |file|
6
- require(File.join(File.dirname(__FILE__), 'query', file))
7
- end
8
- module Sunspot
9
- module Query #:nodoc:all
10
- end
11
- end
@@ -1,55 +0,0 @@
1
- module Sunspot
2
- module Query
3
- class AbstractFieldFacet
4
- include RSolr::Char
5
-
6
- def initialize(field, options)
7
- @field, @options = field, options
8
- end
9
-
10
- def to_params
11
- params = {
12
- :facet => 'true',
13
- }
14
- case @options[:sort]
15
- when :count
16
- params[qualified_param('sort')] = 'true'
17
- when :index
18
- params[qualified_param('sort')] = 'false'
19
- when nil
20
- else
21
- raise(
22
- ArgumentError,
23
- "#{@options[:sort].inspect} is not an allowed value for :sort. Allowed options are :count and :index"
24
- )
25
- end
26
- if @options[:limit]
27
- params[qualified_param('limit')] = @options[:limit].to_i
28
- end
29
- if @options[:offset]
30
- params[qualified_param('offset')] = @options[:offset].to_i
31
- end
32
- if @options[:prefix]
33
- params[qualified_param('prefix')] = @options[:prefix].to_s
34
- end
35
- params[qualified_param('mincount')] =
36
- case
37
- when @options[:minimum_count] then @options[:minimum_count].to_i
38
- when @options[:zeros] then 0
39
- else 1
40
- end
41
- params
42
- end
43
-
44
- private
45
-
46
- def qualified_param(param)
47
- :"f.#{key}.facet.#{param}"
48
- end
49
-
50
- def key
51
- @key ||= @options[:name] || @field.indexed_name
52
- end
53
- end
54
- end
55
- end
@@ -1,15 +0,0 @@
1
- module Sunspot
2
- module Query
3
- class Bbox
4
- def initialize(field, first_corner, second_corner)
5
- @field, @first_corner, @second_corner = field, first_corner, second_corner
6
- end
7
-
8
- def to_params
9
- filter = "#{@field.indexed_name}:[#{@first_corner.join(",")} TO #{@second_corner.join(",")}]"
10
-
11
- {:fq => filter}
12
- end
13
- end
14
- end
15
- end
@@ -1,24 +0,0 @@
1
- module Sunspot
2
- module Query
3
- #
4
- # Representation of a BoostQuery, which allows the searcher to specify a
5
- # scope for which matching documents should have an extra boost. This is
6
- # essentially a conjunction, with an extra instance variable containing
7
- # the boost that should be applied.
8
- #
9
- class BoostQuery < Connective::Conjunction #:nodoc:
10
- def initialize(boost)
11
- super(false)
12
- @boost = boost
13
- end
14
-
15
- def to_boolean_phrase
16
- if @boost.is_a?(FunctionQuery)
17
- "#{@boost}"
18
- else
19
- "#{super}^#{@boost}"
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,96 +0,0 @@
1
- module Sunspot
2
- module Query #:nodoc:
3
- class CommonQuery
4
- def initialize(types)
5
- @scope = Scope.new
6
- @sort = SortComposite.new
7
- @components = [@scope, @sort]
8
- if types.length == 1
9
- @scope.add_positive_restriction(TypeField.instance, Restriction::EqualTo, types.first)
10
- else
11
- @scope.add_positive_restriction(TypeField.instance, Restriction::AnyOf, types)
12
- end
13
- end
14
-
15
- def solr_parameter_adjustment=(block)
16
- @parameter_adjustment = block
17
- end
18
-
19
- def add_sort(sort)
20
- @sort << sort
21
- end
22
-
23
- def add_group(group)
24
- @components << group
25
- group
26
- end
27
-
28
- def add_field_facet(facet)
29
- @components << facet
30
- facet
31
- end
32
-
33
- def add_query_facet(facet)
34
- @components << facet
35
- facet
36
- end
37
-
38
- def add_function(function)
39
- @components << function
40
- function
41
- end
42
-
43
- def add_geo(geo)
44
- @components << geo
45
- geo
46
- end
47
-
48
- def paginate(page, per_page, offset = nil)
49
- if @pagination
50
- @pagination.offset = offset
51
- @pagination.page = page
52
- @pagination.per_page = per_page
53
- else
54
- @components << @pagination = Pagination.new(page, per_page, offset)
55
- end
56
- end
57
-
58
- def to_params
59
- params = {}
60
- @components.each do |component|
61
- Sunspot::Util.deep_merge!(params, component.to_params)
62
- end
63
- @parameter_adjustment.call(params) if @parameter_adjustment
64
- params[:q] ||= '*:*'
65
- params
66
- end
67
-
68
- def [](key)
69
- to_params[key.to_sym]
70
- end
71
-
72
- def page
73
- @pagination.page if @pagination
74
- end
75
-
76
- def per_page
77
- @pagination.per_page if @pagination
78
- end
79
-
80
-
81
- private
82
-
83
- #
84
- # If we have a single fulltext query, merge is normally. If there are
85
- # multiple nested queries, serialize them as `_query_` subqueries.
86
- #
87
- def merge_fulltext(params)
88
- return nil if @fulltexts.empty?
89
- return Sunspot::Util.deep_merge!(params, @fulltexts.first.to_params) if @fulltexts.length == 1
90
- subqueries = @fulltexts.map {|fulltext| fulltext.to_subquery }.join(' ')
91
- Sunspot::Util.deep_merge!(params, {:q => subqueries})
92
- end
93
-
94
- end
95
- end
96
- end
@@ -1,36 +0,0 @@
1
- module Sunspot
2
- module Query
3
- class CompositeFulltext
4
- def initialize
5
- @components = []
6
- end
7
-
8
- def add(keywords)
9
- @components << dismax = Dismax.new(keywords)
10
- dismax
11
- end
12
-
13
- def add_location(field, lat, lng, options)
14
- @components << location = Geo.new(field, lat, lng, options)
15
- location
16
- end
17
-
18
- def to_params
19
- case @components.length
20
- when 0
21
- {}
22
- when 1
23
- @components.first.to_params.merge(:fl => '* score')
24
- else
25
- to_subqueries.merge(:fl => '* score')
26
- end
27
- end
28
-
29
- private
30
-
31
- def to_subqueries
32
- { :q => @components.map { |dismax| dismax.to_subquery }.join(' ') }
33
- end
34
- end
35
- end
36
- end
@@ -1,206 +0,0 @@
1
- module Sunspot
2
- module Query
3
- module Connective #:nodoc:all
4
- #
5
- # Base class for connectives (conjunctions and disjunctions).
6
- #
7
- class Abstract
8
- include Filter
9
-
10
- def initialize(negated = false) #:nodoc:
11
- @negated = negated
12
- @components = []
13
- end
14
-
15
- #
16
- # Add a restriction to the connective.
17
- #
18
- def add_restriction(negated, field, restriction_type, *value)
19
- add_component(restriction_type.new(negated, field, *value))
20
- end
21
-
22
- #
23
- # Add a shorthand restriction; the restriction type is determined by
24
- # the value.
25
- #
26
- def add_shorthand_restriction(negated, field, value)
27
- restriction_type =
28
- case value
29
- when Array then Restriction::AnyOf
30
- when Range then Restriction::Between
31
- else Restriction::EqualTo
32
- end
33
- add_restriction(negated, field, restriction_type, value)
34
- end
35
-
36
- #
37
- # Add a positive restriction. The restriction will match all
38
- # documents who match the terms fo the restriction.
39
- #
40
- def add_positive_restriction(field, restriction_type, value)
41
- add_restriction(false, field, restriction_type, value)
42
- end
43
-
44
- #
45
- # Add a positive shorthand restriction (see add_shorthand_restriction)
46
- #
47
- def add_positive_shorthand_restriction(field, value)
48
- add_shorthand_restriction(false, field, value)
49
- end
50
-
51
- #
52
- # Add a negated restriction. The added restriction will match all
53
- # documents who do not match the terms of the restriction.
54
- #
55
- def add_negated_restriction(field, restriction_type, value)
56
- add_restriction(true, field, restriction_type, value)
57
- end
58
-
59
- #
60
- # Add a negated shorthand restriction (see add_shorthand_restriction)
61
- #
62
- def add_negated_shorthand_restriction(field, value)
63
- add_shorthand_restriction(true, field, value)
64
- end
65
-
66
- #
67
- # Add a new conjunction and return it.
68
- #
69
- def add_conjunction
70
- add_component(Conjunction.new)
71
- end
72
-
73
- #
74
- # Add a new disjunction and return it.
75
- #
76
- def add_disjunction
77
- add_component(Disjunction.new)
78
- end
79
-
80
- #
81
- # Add an arbitrary component to the conjunction, and return it.
82
- # The component must respond to #to_boolean_phrase
83
- #
84
- def add_component(component)
85
- @components << component
86
- component
87
- end
88
-
89
- #
90
- # Express the connective as a Lucene boolean phrase.
91
- #
92
- def to_boolean_phrase #:nodoc:
93
- unless @components.empty?
94
- phrase =
95
- if @components.length == 1
96
- @components.first.to_boolean_phrase
97
- else
98
- component_phrases = @components.map do |component|
99
- component.to_boolean_phrase
100
- end
101
- "(#{component_phrases.join(" #{connector} ")})"
102
- end
103
- if negated?
104
- "-#{phrase}"
105
- else
106
- phrase
107
- end
108
- end
109
- end
110
-
111
- #
112
- # Connectives can be negated during the process of denormalization that
113
- # is performed when a disjunction contains a negated component. This
114
- # method conforms to the duck type for all boolean query components.
115
- #
116
- def negated?
117
- @negated
118
- end
119
-
120
- #
121
- # Returns a new connective that's a negated version of this one.
122
- #
123
- def negate
124
- negated = self.class.new(!negated?)
125
- @components.each do |component|
126
- negated.add_component(component)
127
- end
128
- negated
129
- end
130
- end
131
-
132
- #
133
- # Disjunctions combine their components with an OR operator.
134
- #
135
- class Disjunction < Abstract
136
- class <<self
137
- def inverse
138
- Conjunction
139
- end
140
- end
141
-
142
- #
143
- # Express this disjunction as a Lucene boolean phrase
144
- #
145
- def to_boolean_phrase
146
- if @components.any? { |component| component.negated? }
147
- denormalize.to_boolean_phrase
148
- else
149
- super
150
- end
151
- end
152
-
153
- #
154
- # No-op - this is already a disjunction
155
- #
156
- def add_disjunction
157
- self
158
- end
159
-
160
- private
161
-
162
- def connector
163
- 'OR'
164
- end
165
-
166
- #
167
- # If a disjunction contains negated components, it must be
168
- # "denormalized", because the Lucene parser interprets any negated
169
- # boolean phrase using AND semantics (this isn't a bug, it's just a
170
- # subtlety of how Lucene parses queries). So, per DeMorgan's law we
171
- # create a negated conjunction and add to it all of our components,
172
- # negated themselves, which creates a query whose Lucene semantics are
173
- # in line with our intentions.
174
- #
175
- def denormalize
176
- denormalized = self.class.inverse.new(!negated?)
177
- @components.each do |component|
178
- denormalized.add_component(component.negate)
179
- end
180
- denormalized
181
- end
182
- end
183
-
184
- #
185
- # Conjunctions combine their components with an AND operator.
186
- #
187
- class Conjunction < Abstract
188
- class <<self
189
- def inverse
190
- Disjunction
191
- end
192
- end
193
-
194
- def add_conjunction
195
- self
196
- end
197
-
198
- private
199
-
200
- def connector
201
- 'AND'
202
- end
203
- end
204
- end
205
- end
206
- end