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

Sign up to get free protection for your applications and to get access to all the features.
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,53 +0,0 @@
1
- module Sunspot
2
- # The Sunspot::Configuration module provides a factory method for Sunspot
3
- # configuration objects. Available properties are:
4
- #
5
- # Sunspot.config.solr.url::
6
- # The URL at which to connect to Solr
7
- # (default: 'http://localhost:8983/solr')
8
- # Sunspot.config.pagination.default_per_page::
9
- # Solr always paginates its results. This sets Sunspot's default result
10
- # count per page if it is not explicitly specified in the query.
11
- # Sunspot.config.indexing.default_batch_size::
12
- # This sets the batch size for indexing, default is 50
13
- #
14
- module Configuration
15
- class <<self
16
- # Factory method to build configuration instances.
17
- #
18
- # ==== Returns
19
- #
20
- # LightConfig::Configuration:: new configuration instance with defaults
21
- #
22
- def build #:nodoc:
23
- LightConfig.build do
24
- solr do
25
- url 'http://127.0.0.1:8983/solr'
26
- read_timeout nil
27
- open_timeout nil
28
- end
29
- master_solr do
30
- url nil
31
- end
32
- pagination do
33
- default_per_page 30
34
- end
35
- indexing do
36
- default_batch_size 50
37
- end
38
- end
39
- end
40
-
41
- # Location for the default solr configuration files,
42
- # required for bootstrapping a new solr installation
43
- #
44
- # ==== Returns
45
- #
46
- # String:: Directory with default solr config files
47
- #
48
- def solr_default_configuration_location
49
- File.join( File.dirname(__FILE__), '../../solr/solr/conf' )
50
- end
51
- end
52
- end
53
- end
@@ -1,50 +0,0 @@
1
- module Sunspot
2
- #
3
- # DataExtractors present an internal API for the indexer to use to extract
4
- # field values from models for indexing. They must implement the #value_for
5
- # method, which takes an object and returns the value extracted from it.
6
- #
7
- module DataExtractor #:nodoc: all
8
- #
9
- # AttributeExtractors extract data by simply calling a method on the block.
10
- #
11
- class AttributeExtractor
12
- def initialize(attribute_name)
13
- @attribute_name = attribute_name
14
- end
15
-
16
- def value_for(object)
17
- object.send(@attribute_name)
18
- end
19
- end
20
-
21
- #
22
- # BlockExtractors extract data by evaluating a block in the context of the
23
- # object instance, or if the block takes an argument, by passing the object
24
- # as the argument to the block. Either way, the return value of the block is
25
- # the value returned by the extractor.
26
- #
27
- class BlockExtractor
28
- def initialize(&block)
29
- @block = block
30
- end
31
-
32
- def value_for(object)
33
- Util.instance_eval_or_call(object, &@block)
34
- end
35
- end
36
-
37
- #
38
- # Constant data extractors simply return the same value for every object.
39
- #
40
- class Constant
41
- def initialize(value)
42
- @value = value
43
- end
44
-
45
- def value_for(object)
46
- @value
47
- end
48
- end
49
- end
50
- end
@@ -1,5 +0,0 @@
1
- %w(fields scope paginatable adjustable field_query standard_query query_facet
2
- functional fulltext restriction restriction_with_near search
3
- more_like_this_query function field_group).each do |file|
4
- require File.join(File.dirname(__FILE__), 'dsl', file)
5
- end
@@ -1,47 +0,0 @@
1
- module Sunspot
2
- module DSL #:nodoc:
3
- module Adjustable #:nodoc
4
- # <strong>Expert:</strong> Adjust or reset the parameters passed to Solr.
5
- # The adjustment will take place just before sending the params to solr,
6
- # after Sunspot builds the Solr params based on the methods called in the
7
- # DSL.
8
- #
9
- # Under normal circumstances, using this method should not be necessary;
10
- # if you find that it is, please consider submitting a feature request.
11
- # Using this method requires knowledge of Sunspot's internal Solr schema
12
- # and Solr query representations, which are not part of Sunspot's public
13
- # API; they could change at any time. <strong>This method is unsupported
14
- # and your mileage may vary.</strong>
15
- #
16
- # ==== Examples
17
- #
18
- # Sunspot.search(Post) do
19
- # adjust_solr_params do |params|
20
- # params[:q] += ' AND something_s:more'
21
- # end
22
- # end
23
- #
24
- # Sunspot.more_like_this(my_post) do
25
- # adjust_solr_params do |params|
26
- # params["mlt.match.include"] = true
27
- # end
28
- # end
29
- #
30
- def adjust_solr_params( &block )
31
- @query.solr_parameter_adjustment = block
32
- end
33
-
34
- #
35
- # <strong>Expert:</strong> Use a custom request handler for this search.
36
- # The general use case for this would be a request handler configuration
37
- # you've defined in solrconfig that has different search components,
38
- # defaults, etc. Using this to point at an entirely different type of
39
- # request handler that Sunspot doesn't support probably won't get you very
40
- # far.
41
- #
42
- def request_handler(request_handler)
43
- @search.request_handler = request_handler
44
- end
45
- end
46
- end
47
- end
@@ -1,57 +0,0 @@
1
- module Sunspot
2
- module DSL
3
- class FieldGroup
4
- def initialize(setup, group)
5
- @setup, @group = setup, group
6
- end
7
-
8
- #
9
- # Sets the number of results (documents) to return for each group.
10
- # Defaults to 1.
11
- #
12
- def limit(num)
13
- @group.limit = num
14
- end
15
-
16
- #
17
- # If set, facet counts are based on the most relevant document of
18
- # each group matching the query.
19
- #
20
- # Supported in Solr 3.4 and above.
21
- #
22
- # ==== Example
23
- #
24
- # Sunspot.search(Post) do
25
- # group :title do
26
- # truncate
27
- # end
28
- #
29
- # facet :title, :extra => :any
30
- # end
31
- #
32
- def truncate
33
- @group.truncate = true
34
- end
35
-
36
- # Specify the order that results should be returned in. This method can
37
- # be called multiple times; precedence will be in the order given.
38
- #
39
- # ==== Parameters
40
- #
41
- # field_name<Symbol>:: the field to use for ordering
42
- # direction<Symbol>:: :asc or :desc (default :asc)
43
- #
44
- def order_by(field_name, direction = nil)
45
- sort =
46
- if special = Sunspot::Query::Sort.special(field_name)
47
- special.new(direction)
48
- else
49
- Sunspot::Query::Sort::FieldSort.new(
50
- @setup.field(field_name), direction
51
- )
52
- end
53
- @group.add_sort(sort)
54
- end
55
- end
56
- end
57
- end
@@ -1,345 +0,0 @@
1
- module Sunspot
2
- module DSL
3
- #
4
- # Provides an API for areas of the query DSL that operate on specific
5
- # fields. This functionality is provided by the query DSL and the dynamic
6
- # query DSL.
7
- #
8
- class FieldQuery < Scope
9
- def initialize(search, query, setup) #:nodoc:
10
- @search, @query = search, query
11
- super(query.scope, setup)
12
- end
13
-
14
- # Specify the order that results should be returned in. This method can
15
- # be called multiple times; precedence will be in the order given.
16
- #
17
- # ==== Parameters
18
- #
19
- # field_name<Symbol>:: the field to use for ordering
20
- # direction<Symbol>:: :asc or :desc (default :asc)
21
- #
22
- def order_by(field_name, direction = nil)
23
- sort =
24
- if special = Sunspot::Query::Sort.special(field_name)
25
- special.new(direction)
26
- else
27
- Sunspot::Query::Sort::FieldSort.new(
28
- @setup.field(field_name), direction
29
- )
30
- end
31
- @query.add_sort(sort)
32
- end
33
-
34
- #
35
- # Specify that the results should be ordered based on their
36
- # distance from a given point.
37
- #
38
- # ==== Parameters
39
- #
40
- # field_name<Symbol>::
41
- # the field that stores the location (declared as `latlon`)
42
- # lat<Numeric>::
43
- # the reference latitude
44
- # lon<Numeric>::
45
- # the reference longitude
46
- # direction<Symbol>::
47
- # :asc or :desc (default :asc)
48
- #
49
- def order_by_geodist(field_name, lat, lon, direction = nil)
50
- @query.add_sort(
51
- Sunspot::Query::Sort::GeodistSort.new(@setup.field(field_name), lat, lon, direction)
52
- )
53
- end
54
-
55
- #
56
- # DEPRECATED Use <code>order_by(:random)</code>
57
- #
58
- def order_by_random
59
- order_by(:random)
60
- end
61
-
62
- # Specify a field for result grouping. Grouping groups documents
63
- # with a common field value, return only the top document per
64
- # group.
65
- #
66
- # More information in the Solr documentation:
67
- # <http://wiki.apache.org/solr/FieldCollapsing>
68
- #
69
- # ==== Parameters
70
- #
71
- # field_name<Symbol>:: the field to use for grouping
72
- def group(*field_names, &block)
73
- options = Sunspot::Util.extract_options_from(field_names)
74
-
75
- field_names.each do |field_name|
76
- field = @setup.field(field_name)
77
- group = @query.add_group(Sunspot::Query::FieldGroup.new(field))
78
- @search.add_field_group(field)
79
-
80
- if block
81
- Sunspot::Util.instance_eval_or_call(
82
- FieldGroup.new(@setup, group),
83
- &block
84
- )
85
- end
86
- end
87
- end
88
-
89
- #
90
- # Request a facet on the search query. A facet is a feature of Solr that
91
- # determines the number of documents that match the existing search *and*
92
- # an additional criterion. This allows you to build powerful drill-down
93
- # interfaces for search, at each step presenting the searcher with a set
94
- # of refinements that are known to return results.
95
- #
96
- # In Sunspot, each facet returns zero or more rows, each of which
97
- # represents a particular criterion conjoined with the actual query being
98
- # performed. For _field_ _facets_, each row represents a particular value
99
- # for a given field. For _query_ _facets_, each row represents an
100
- # arbitrary scope; the facet itself is just a means of logically grouping
101
- # the scopes.
102
- #
103
- # === Examples
104
- #
105
- # ==== Field Facets
106
- #
107
- # A field facet is specified by passing one or more Symbol arguments to
108
- # this method:
109
- #
110
- # Sunspot.search(Post) do
111
- # with(:blog_id, 1)
112
- # facet(:category_id)
113
- # end
114
- #
115
- # The facet specified above will have a row for each category_id that is
116
- # present in a document which also has a blog_id of 1.
117
- #
118
- # ==== Multiselect Facets
119
- #
120
- # In certain circumstances, it is beneficial to exclude certain query
121
- # scopes from a facet; the most common example is multi-select faceting,
122
- # where the user has selected a certain value, but the facet should still
123
- # show all options that would be available if they had not:
124
- #
125
- # Sunspot.search(Post) do
126
- # with(:blog_id, 1)
127
- # category_filter = with(:category_id, 2)
128
- # facet(:category_id, :exclude => category_filter)
129
- # end
130
- #
131
- # Although the results of the above search will be restricted to those
132
- # with a category_id of 2, the category_id facet will operate as if a
133
- # category had not been selected, allowing the user to select additional
134
- # categories (which will presumably be ORed together).
135
- #
136
- # It possible to exclude multiple filters by passing an array:
137
- #
138
- # Sunspot.search(Post) do
139
- # with(:blog_id, 1)
140
- # category_filter = with(:category_id, 2)
141
- # author_filter = with(:author_id, 3)
142
- # facet(:category_id,
143
- # :exclude => [category_filter, author_filter].compact)
144
- # end
145
- #
146
- # You should consider using +.compact+ to ensure that the array does not
147
- # contain any nil values.
148
- #
149
- # <strong>As far as I can tell, Solr only supports multi-select with
150
- # field facets; if +:exclude+ is passed to a query facet, this method will
151
- # raise an error. Also, the +:only+ and +:extra+ options use query
152
- # faceting under the hood, so these can't be used with +:extra+ either.
153
- # </strong>
154
- #
155
- # ==== Query Facets
156
- #
157
- # A query facet is a collection of arbitrary scopes, each of which
158
- # represents a row. This is specified by passing a block into the #facet
159
- # method; the block then contains one or more +row+ blocks, each of which
160
- # creates a query facet row. The +row+ blocks follow the usual Sunspot
161
- # scope DSL.
162
- #
163
- # For example, a query facet can be used to facet over a set of ranges:
164
- #
165
- # Sunspot.search(Post) do
166
- # facet(:average_rating) do
167
- # row(1.0..2.0) do
168
- # with(:average_rating, 1.0..2.0)
169
- # end
170
- # row(2.0..3.0) do
171
- # with(:average_rating, 2.0..3.0)
172
- # end
173
- # row(3.0..4.0) do
174
- # with(:average_rating, 3.0..4.0)
175
- # end
176
- # row(4.0..5.0) do
177
- # with(:average_rating, 4.0..5.0)
178
- # end
179
- # end
180
- # end
181
- #
182
- # Note that the arguments to the +facet+ and +row+ methods simply provide
183
- # labels for the facet and its rows, so that they can be retrieved and
184
- # identified from the Search object. They are not passed to Solr and no
185
- # semantic meaning is attached to them. The label for +facet+ should be
186
- # a symbol; the label for +row+ can be whatever you'd like.
187
- #
188
- # ==== Range Facets
189
- #
190
- # One can use the Range Faceting feature on any date field or any numeric
191
- # field that supports range queries. This is particularly useful for the
192
- # cases in the past where one might stitch together a series of range
193
- # queries (as facet by query) for things like prices, etc.
194
- #
195
- # For example faceting over average ratings can be done as follows:
196
- #
197
- # Sunspot.search(Post) do
198
- # facet :average_rating, :range => 1..5, :range_interval => 1
199
- # end
200
- #
201
- # ==== Parameters
202
- #
203
- # field_names...<Symbol>:: fields for which to return field facets
204
- #
205
- # ==== Options
206
- #
207
- # :sort<Symbol>::
208
- # Either :count (values matching the most terms first) or :index (lexical)
209
- # :limit<Integer>::
210
- # The maximum number of facet rows to return
211
- # :offset<Integer>::
212
- # The offset from which to start returning facet rows
213
- # :minimum_count<Integer>::
214
- # The minimum count a facet row must have to be returned
215
- # :zeros<Boolean>::
216
- # Return facet rows for which there are no matches (equivalent to
217
- # :minimum_count => 0). Default is false.
218
- # :exclude<Object,Array>::
219
- # Exclude one or more filters when performing the faceting (see
220
- # Multiselect Faceting above). The object given for this argument should
221
- # be the return value(s) of a scoping method (+with+, +any_of+,
222
- # +all_of+, etc.). <strong>Only can be used for field facets that do not
223
- # use the +:extra+ or +:only+ options.</strong>
224
- # :name<Symbol>::
225
- # Give a custom name to a field facet. The main use case for this option
226
- # is for requesting the same field facet multiple times, using different
227
- # filter exclusions (see Multiselect Faceting above). If you pass this
228
- # option, it is also the argument that should be passed to Search#facet
229
- # when retrieving the facet result.
230
- # :only<Array>::
231
- # Only return facet rows for the given values. Useful if you are only
232
- # interested in faceting on a subset of values for a given field.
233
- # <strong>Only applies to field facets.</strong>
234
- # :extra<Symbol,Array>::
235
- # One or more of :any and :none. :any returns a facet row with a count
236
- # of all matching documents that have some value for this field. :none
237
- # returns a facet row with a count of all matching documents that have
238
- # no value for this field. The facet row(s) corresponding to the extras
239
- # have a value of the symbol passed. <strong>Only applies to field
240
- # facets.</strong>
241
- #
242
- def facet(*field_names, &block)
243
- options = Sunspot::Util.extract_options_from(field_names)
244
-
245
- if block
246
- if field_names.length != 1
247
- raise(
248
- ArgumentError,
249
- "wrong number of arguments (#{field_names.length} for 1)"
250
- )
251
- end
252
- search_facet = @search.add_query_facet(field_names.first, options)
253
- Sunspot::Util.instance_eval_or_call(
254
- QueryFacet.new(@query, @setup, search_facet, options),
255
- &block
256
- )
257
- elsif options[:only]
258
- if options.has_key?(:exclude)
259
- raise(
260
- ArgumentError,
261
- "can't use :exclude with :only (see documentation)"
262
- )
263
- end
264
- field_names.each do |field_name|
265
- field = @setup.field(field_name)
266
- search_facet = @search.add_field_facet(field, options)
267
- Util.Array(options[:only]).each do |value|
268
- facet = Sunspot::Query::QueryFacet.new
269
- facet.add_positive_restriction(field, Sunspot::Query::Restriction::EqualTo, value)
270
- @query.add_query_facet(facet)
271
- search_facet.add_row(value, facet.to_boolean_phrase)
272
- end
273
- end
274
- else
275
- field_names.each do |field_name|
276
- search_facet = nil
277
- field = @setup.field(field_name)
278
- facet =
279
- if options[:time_range]
280
- unless field.type.is_a?(Sunspot::Type::TimeType)
281
- raise(
282
- ArgumentError,
283
- ':time_range can only be specified for Date or Time fields'
284
- )
285
- end
286
- search_facet = @search.add_date_facet(field, options)
287
- Sunspot::Query::DateFieldFacet.new(field, options)
288
- elsif options[:range]
289
- unless [Sunspot::Type::TimeType, Sunspot::Type::FloatType, Sunspot::Type::IntegerType ].inject(false){|res,type| res || field.type.is_a?(type)}
290
- raise(
291
- ArgumentError,
292
- ':range can only be specified for date or numeric fields'
293
- )
294
- end
295
- search_facet = @search.add_range_facet(field, options)
296
- Sunspot::Query::RangeFacet.new(field, options)
297
- else
298
- search_facet = @search.add_field_facet(field, options)
299
- Sunspot::Query::FieldFacet.new(field, options)
300
- end
301
- @query.add_field_facet(facet)
302
- Util.Array(options[:extra]).each do |extra|
303
- if options.has_key?(:exclude)
304
- raise(
305
- ArgumentError,
306
- "can't use :exclude with :extra (see documentation)"
307
- )
308
- end
309
- extra_facet = Sunspot::Query::QueryFacet.new
310
- case extra
311
- when :any
312
- extra_facet.add_negated_restriction(
313
- field,
314
- Sunspot::Query::Restriction::EqualTo,
315
- nil
316
- )
317
- when :none
318
- extra_facet.add_positive_restriction(
319
- field,
320
- Sunspot::Query::Restriction::EqualTo,
321
- nil
322
- )
323
- else
324
- raise(
325
- ArgumentError,
326
- "Allowed values for :extra are :any and :none"
327
- )
328
- end
329
- search_facet.add_row(extra, extra_facet.to_boolean_phrase)
330
- @query.add_query_facet(extra_facet)
331
- end
332
- end
333
- end
334
- end
335
-
336
- def dynamic(base_name, &block)
337
- dynamic_field_factory = @setup.dynamic_field_factory(base_name)
338
- Sunspot::Util.instance_eval_or_call(
339
- FieldQuery.new(@search, @query, dynamic_field_factory),
340
- &block
341
- )
342
- end
343
- end
344
- end
345
- end