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,42 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'abstract_session_proxy')
2
-
3
- module Sunspot
4
- module SessionProxy
5
- class SilentFailSessionProxy < AbstractSessionProxy
6
-
7
- attr_reader :search_session
8
-
9
- delegate :new_search, :search, :config,
10
- :new_more_like_this, :more_like_this,
11
- :delete_dirty, :delete_dirty?,
12
- :to => :search_session
13
-
14
- def initialize(search_session = Sunspot.session)
15
- @search_session = search_session
16
- end
17
-
18
- def rescued_exception(method, e)
19
- $stderr.puts("Exception in #{method}: #{e.message}")
20
- end
21
-
22
- SUPPORTED_METHODS = [
23
- :batch, :commit, :commit_if_dirty, :commit_if_delete_dirty, :dirty?,
24
- :index!, :index, :optimize, :remove!, :remove, :remove_all!, :remove_all,
25
- :remove_by_id!, :remove_by_id
26
- ]
27
-
28
- SUPPORTED_METHODS.each do |method|
29
- module_eval(<<-RUBY)
30
- def #{method}(*args, &block)
31
- begin
32
- search_session.#{method}(*args, &block)
33
- rescue => e
34
- self.rescued_exception(:#{method}, e)
35
- end
36
- end
37
- RUBY
38
- end
39
-
40
- end
41
- end
42
- end
@@ -1,37 +0,0 @@
1
- require 'monitor'
2
- require File.join(File.dirname(__FILE__), 'abstract_session_proxy')
3
-
4
- module Sunspot
5
- module SessionProxy
6
- #
7
- # This class implements a session proxy that creates a different Session
8
- # object for each thread. Any multithreaded application should use this
9
- # proxy.
10
- #
11
- class ThreadLocalSessionProxy < AbstractSessionProxy
12
- FINALIZER = Proc.new do |object_id|
13
- Thread.current[:"sunspot_session_#{object_id}"] = nil
14
- end
15
-
16
- # The configuration with which the thread-local sessions are initialized.
17
- attr_reader :config
18
- @@next_id = 0
19
-
20
- delegate :batch, :commit, :commit_if_delete_dirty, :commit_if_dirty, :delete_dirty?, :dirty?, :index, :index!, :new_search, :optimize, :remove, :remove!, :remove_all, :remove_all!, :remove_by_id, :remove_by_id!, :search, :more_like_this, :new_more_like_this, :to => :session
21
-
22
- #
23
- # Optionally pass an existing Sunspot::Configuration object. If none is
24
- # passed, a default configuration is used; it can then be modified using
25
- # the #config attribute.
26
- #
27
- def initialize(config = Sunspot::Configuration.new)
28
- @config = config
29
- ObjectSpace.define_finalizer(self, FINALIZER)
30
- end
31
-
32
- def session #:nodoc:
33
- Thread.current[:"sunspot_session_#{object_id}"] ||= Session.new(config)
34
- end
35
- end
36
- end
37
- end
@@ -1,350 +0,0 @@
1
- module Sunspot
2
- #
3
- # This class encapsulates the search/indexing setup for a given class. Its
4
- # contents are built using the Sunspot.setup method.
5
- #
6
- class Setup #:nodoc:
7
- attr_reader :class_object_id
8
- def initialize(clazz)
9
- @class_object_id = clazz.object_id
10
- @class_name = clazz.name
11
- @field_factories, @text_field_factories, @dynamic_field_factories,
12
- @field_factories_cache, @text_field_factories_cache,
13
- @dynamic_field_factories_cache = *Array.new(6) { Hash.new }
14
- @stored_field_factories_cache = Hash.new { |h, k| h[k] = [] }
15
- @more_like_this_field_factories_cache = Hash.new { |h, k| h[k] = [] }
16
- @dsl = DSL::Fields.new(self)
17
- add_field_factory(:class, Type::ClassType.instance)
18
- end
19
-
20
- def type_names
21
- [@class_name]
22
- end
23
-
24
- #
25
- # Add field factory for scope/ordering
26
- #
27
- def add_field_factory(name, type, options = {}, &block)
28
- stored, more_like_this = options[:stored], options[:more_like_this]
29
- field_factory = FieldFactory::Static.new(name, type, options, &block)
30
- @field_factories[field_factory.signature] = field_factory
31
- @field_factories_cache[field_factory.name] = field_factory
32
- if stored
33
- @stored_field_factories_cache[field_factory.name] << field_factory
34
- end
35
- if more_like_this
36
- @more_like_this_field_factories_cache[field_factory.name] << field_factory
37
- end
38
- end
39
-
40
- #
41
- # Add field_factories for fulltext search
42
- #
43
- # ==== Parameters
44
- #
45
- # field_factories<Array>:: Array of Sunspot::Field objects
46
- #
47
- def add_text_field_factory(name, options = {}, &block)
48
- stored, more_like_this = options[:stored], options[:more_like_this]
49
- field_factory = FieldFactory::Static.new(name, Type::TextType.instance, options, &block)
50
- @text_field_factories[name] = field_factory
51
- @text_field_factories_cache[field_factory.name] = field_factory
52
- if stored
53
- @stored_field_factories_cache[field_factory.name] << field_factory
54
- end
55
- if more_like_this
56
- @more_like_this_field_factories_cache[field_factory.name] << field_factory
57
- end
58
- end
59
-
60
- #
61
- # Add dynamic field_factories
62
- #
63
- # ==== Parameters
64
- #
65
- # field_factories<Array>:: Array of dynamic field objects
66
- #
67
- def add_dynamic_field_factory(name, type, options = {}, &block)
68
- stored, more_like_this = options[:stored], options[:more_like_this]
69
- field_factory = FieldFactory::Dynamic.new(name, type, options, &block)
70
- @dynamic_field_factories[field_factory.signature] = field_factory
71
- @dynamic_field_factories_cache[field_factory.name] = field_factory
72
- if stored
73
- @stored_field_factories_cache[field_factory.name] << field_factory
74
- end
75
- if more_like_this
76
- @more_like_this_field_factories_cache[field_factory.name] << field_factory
77
- end
78
- end
79
-
80
- #
81
- # Add a document boost to documents at index time. Document boost can be
82
- # static (the same for all documents of this class), or extracted on a per-
83
- # document basis using either attribute or block extraction as per usual.
84
- #
85
- def add_document_boost(attr_name, &block)
86
- @document_boost_extractor =
87
- if attr_name
88
- if attr_name.respond_to?(:to_f)
89
- DataExtractor::Constant.new(attr_name)
90
- else
91
- DataExtractor::AttributeExtractor.new(attr_name)
92
- end
93
- else
94
- DataExtractor::BlockExtractor.new(&block)
95
- end
96
- end
97
-
98
- #
99
- # Builder method for evaluating the setup DSL
100
- #
101
- def setup(&block)
102
- Util.instance_eval_or_call(@dsl, &block)
103
- end
104
-
105
- #
106
- # Return the Field with the given (public-facing) name
107
- #
108
- def field(field_name)
109
- if field_factory = @field_factories_cache[field_name.to_sym]
110
- field_factory.build
111
- else
112
- raise(
113
- UnrecognizedFieldError,
114
- "No field configured for #{@class_name} with name '#{field_name}'"
115
- )
116
- end
117
- end
118
-
119
- #
120
- # Return one or more text fields with the given public-facing name. This
121
- # implementation will always return a single field (in an array), but
122
- # CompositeSetup objects might return more than one.
123
- #
124
- def text_fields(field_name)
125
- text_field =
126
- if field_factory = @text_field_factories_cache[field_name.to_sym]
127
- field_factory.build
128
- else
129
- raise(
130
- UnrecognizedFieldError,
131
- "No text field configured for #{@class_name} with name '#{field_name}'"
132
- )
133
- end
134
- [text_field]
135
- end
136
-
137
- #
138
- # Return one or more stored fields (can be either attribute or text fields)
139
- # for the given name.
140
- #
141
- def stored_fields(field_name, dynamic_field_name = nil)
142
- @stored_field_factories_cache[field_name.to_sym].map do |field_factory|
143
- if dynamic_field_name
144
- field_factory.build(dynamic_field_name)
145
- else
146
- field_factory.build
147
- end
148
- end
149
- end
150
-
151
- #
152
- # Return one or more more_like_this fields (can be either attribute or text fields)
153
- # for the given name.
154
- #
155
- def more_like_this_fields(field_name)
156
- @more_like_this_field_factories_cache[field_name.to_sym].map do |field_factory|
157
- field_factory.build
158
- end
159
- end
160
-
161
- #
162
- # Return the DynamicFieldFactory with the given base name
163
- #
164
- def dynamic_field_factory(field_name)
165
- @dynamic_field_factories_cache[field_name.to_sym] || raise(
166
- UnrecognizedFieldError,
167
- "No dynamic field configured for #{@class_name} with name '#{field_name}'"
168
- )
169
- end
170
-
171
- #
172
- # Return all attribute fields
173
- #
174
- def fields
175
- field_factories.map { |field_factory| field_factory.build }
176
- end
177
-
178
- #
179
- # Return all text fields
180
- #
181
- def all_text_fields
182
- text_field_factories.map { |text_field_factory| text_field_factory.build }
183
- end
184
-
185
- #
186
- # Return all more_like_this fields
187
- #
188
- def all_more_like_this_fields
189
- @more_like_this_field_factories_cache.values.map do |field_factories|
190
- field_factories.map { |field_factory| field_factory.build }
191
- end.flatten
192
- end
193
-
194
- #
195
- # Get the field_factories associated with this setup as well as all inherited field_factories
196
- #
197
- # ==== Returns
198
- #
199
- # Array:: Collection of all field_factories associated with this setup
200
- #
201
- def field_factories
202
- collection_from_inheritable_hash(:field_factories)
203
- end
204
-
205
- #
206
- # Get the text field_factories associated with this setup as well as all inherited
207
- # text field_factories
208
- #
209
- # ==== Returns
210
- #
211
- # Array:: Collection of all text field_factories associated with this setup
212
- #
213
- def text_field_factories
214
- collection_from_inheritable_hash(:text_field_factories)
215
- end
216
-
217
- #
218
- # Get all static, dynamic, and text field_factories associated with this setup as
219
- # well as all inherited field_factories
220
- #
221
- # ==== Returns
222
- #
223
- # Array:: Collection of all text and scope field_factories associated with this setup
224
- #
225
- def all_field_factories
226
- all_field_factories = []
227
- all_field_factories.concat(field_factories).concat(text_field_factories).concat(dynamic_field_factories)
228
- all_field_factories
229
- end
230
-
231
- #
232
- # Get all dynamic field_factories for this and parent setups
233
- #
234
- # ==== Returns
235
- #
236
- # Array:: Dynamic field_factories
237
- #
238
- def dynamic_field_factories
239
- collection_from_inheritable_hash(:dynamic_field_factories)
240
- end
241
-
242
- #
243
- # Return the class associated with this setup.
244
- #
245
- # ==== Returns
246
- #
247
- # clazz<Class>:: Class setup is configured for
248
- #
249
- def clazz
250
- Util.full_const_get(@class_name)
251
- end
252
-
253
- #
254
- # Get the document boost for a given model
255
- #
256
- def document_boost_for(model)
257
- if @document_boost_extractor
258
- @document_boost_extractor.value_for(model)
259
- end
260
- end
261
-
262
- protected
263
-
264
- #
265
- # Get the nearest inherited setup, if any
266
- #
267
- # ==== Returns
268
- #
269
- # Sunspot::Setup:: Setup for the nearest ancestor of this setup's class
270
- #
271
- def parent
272
- Setup.for(clazz.superclass)
273
- end
274
-
275
- def get_inheritable_hash(name)
276
- hash = instance_variable_get(:"@#{name}")
277
- parent.get_inheritable_hash(name).each_pair do |key, value|
278
- hash[key] = value unless hash.has_key?(key)
279
- end if parent
280
- hash
281
- end
282
-
283
- private
284
-
285
- def collection_from_inheritable_hash(name)
286
- get_inheritable_hash(name).values
287
- end
288
-
289
- class <<self
290
- #
291
- # Retrieve or create the Setup instance for the given class, evaluating
292
- # the given block to add to the setup's configuration
293
- #
294
- def setup(clazz, &block) #:nodoc:
295
- self.for!(clazz).setup(&block)
296
- end
297
-
298
- #
299
- # Retrieve the setup instance for the given class, or for the nearest
300
- # ancestor that has a setup, if any.
301
- #
302
- # ==== Parameters
303
- #
304
- # clazz<Class>:: Class for which to retrieve a setup
305
- #
306
- # ==== Returns
307
- #
308
- # Sunspot::Setup::
309
- # Setup instance associated with the given class or its nearest ancestor
310
- #
311
- def for(clazz) #:nodoc:
312
- setups[clazz.name.to_sym] || self.for(clazz.superclass) if clazz
313
- end
314
-
315
- protected
316
-
317
- #
318
- # Retrieve or create a Setup instance for this class
319
- #
320
- # ==== Parameters
321
- #
322
- # clazz<Class>:: Class for which to retrieve a setup
323
- #
324
- # ==== Returns
325
- #
326
- # Sunspot::Setup:: New or existing setup for this class
327
- #
328
- def for!(clazz) #:nodoc:
329
- setup = setups[clazz.name.to_sym]
330
- if setup && setup.class_object_id == clazz.object_id
331
- setup
332
- else
333
- setups[clazz.name.to_sym] = new(clazz)
334
- end
335
- end
336
-
337
- private
338
-
339
- # Singleton hash of class names to Setup instances
340
- #
341
- # ==== Returns
342
- #
343
- # Hash:: Class names keyed to Setup instances
344
- #
345
- def setups
346
- @setups ||= {}
347
- end
348
- end
349
- end
350
- end
@@ -1,29 +0,0 @@
1
- module Sunspot
2
- #
3
- # A TextFieldSetup encapsulates a regular (or composite) setup, and exposes
4
- # the #field() method returning text fields instead of attribute fields.
5
- #
6
- class TextFieldSetup #:nodoc:
7
- def initialize(setup)
8
- @setup = setup
9
- end
10
-
11
- #
12
- # Return a text field with the given name. Duck-type compatible with
13
- # Setup and CompositeSetup, but return text fields instead.
14
- #
15
- def field(name)
16
- fields = @setup.text_fields(name)
17
- if fields
18
- if fields.length == 1
19
- fields.first
20
- else
21
- raise(
22
- Sunspot::UnrecognizedFieldError,
23
- "The text field with name #{name} has incompatible configurations for the classes #{@setup.type_names.join(', ')}"
24
- )
25
- end
26
- end
27
- end
28
- end
29
- end