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,30 +0,0 @@
1
- module Sunspot
2
- module DSL
3
- #
4
- # This top-level DSL class is the context in which the block passed to
5
- # Sunspot.query. See Sunspot::DSL::StandardQuery, Sunspot::DSL::FieldQuery,
6
- # and Sunspot::DSL::Scope for the full API presented.
7
- #
8
- class Search < StandardQuery
9
- def initialize(search, setup) #:nodoc:
10
- @search = search
11
- super(search, search.query, setup)
12
- end
13
-
14
- #
15
- # Retrieve the data accessor used to load instances of the given class
16
- # out of persistent storage. Data accessors are free to implement any
17
- # extra methods that may be useful in this context.
18
- #
19
- # ==== Example
20
- #
21
- # Sunspot.search Post do
22
- # data_acccessor_for(Post).includes = [:blog, :comments]
23
- # end
24
- #
25
- def data_accessor_for(clazz)
26
- @search.data_accessor_for(clazz)
27
- end
28
- end
29
- end
30
- end
@@ -1,122 +0,0 @@
1
- module Sunspot
2
- module DSL #:nodoc:
3
- #
4
- # This class presents a DSL for constructing queries using the
5
- # Sunspot.search method. Methods of this class are available inside the
6
- # search block. Much of the DSL's functionality is implemented by this
7
- # class's superclasses, Sunspot::DSL::FieldQuery and Sunspot::DSL::Scope
8
- #
9
- # See Sunspot.search for usage examples
10
- #
11
- class StandardQuery < FieldQuery
12
- include Paginatable, Adjustable
13
-
14
- # Specify a phrase that should be searched as fulltext. Only +text+
15
- # fields are searched - see DSL::Fields.text
16
- #
17
- # Keyword search is executed using Solr's dismax handler, which strikes
18
- # a good balance between powerful and foolproof. In particular,
19
- # well-matched quotation marks can be used to group phrases, and the
20
- # + and - modifiers work as expected. All other special Solr boolean
21
- # syntax is escaped, and mismatched quotes are ignored entirely.
22
- #
23
- # This method can optionally take a block, which is evaluated by the
24
- # Fulltext DSL class, and exposes several powerful dismax features.
25
- #
26
- # ==== Parameters
27
- #
28
- # keywords<String>:: phrase to perform fulltext search on
29
- #
30
- # ==== Options
31
- #
32
- # :fields<Array>::
33
- # List of fields that should be searched for keywords. Defaults to all
34
- # fields configured for the types under search.
35
- # :highlight<Boolean,Array>::
36
- # If true, perform keyword highlighting on all searched fields. If an
37
- # array of field names, perform highlighting on the specified fields.
38
- # Note that for highlighting to work, the desired fields have to be set
39
- # up with :stored => true.
40
- # This can also be called from within the fulltext block.
41
- # :minimum_match<Integer>::
42
- # The minimum number of search terms that a result must match. By
43
- # default, all search terms must match; if the number of search terms
44
- # is less than this number, the default behavior applies.
45
- # :tie<Float>::
46
- # A tiebreaker coefficient for scores derived from subqueries that are
47
- # lower-scoring than the maximum score subquery. Typically a near-zero
48
- # value is useful. See
49
- # http://wiki.apache.org/solr/DisMaxRequestHandler#tie_.28Tie_breaker.29
50
- # for more information.
51
- # :query_phrase_slop<Integer>::
52
- # The number of words that can appear between the words in a
53
- # user-entered phrase (i.e., keywords in quotes) and still match. For
54
- # instance, in a search for "\"great pizza\"" with a phrase slop of 1,
55
- # "great pizza" and "great big pizza" will match, but "great monster of
56
- # a pizza" will not. Default behavior is a query phrase slop of zero.
57
- #
58
- def fulltext(keywords, options = {}, &block)
59
- if keywords && !(keywords.to_s =~ /^\s*$/)
60
- fulltext_query = @query.add_fulltext(keywords)
61
- if field_names = options.delete(:fields)
62
- Util.Array(field_names).each do |field_name|
63
- @setup.text_fields(field_name).each do |field|
64
- fulltext_query.add_fulltext_field(field, field.default_boost)
65
- end
66
- end
67
- end
68
- if minimum_match = options.delete(:minimum_match)
69
- fulltext_query.minimum_match = minimum_match.to_i
70
- end
71
- if tie = options.delete(:tie)
72
- fulltext_query.tie = tie.to_f
73
- end
74
- if query_phrase_slop = options.delete(:query_phrase_slop)
75
- fulltext_query.query_phrase_slop = query_phrase_slop.to_i
76
- end
77
- if highlight_field_names = options.delete(:highlight)
78
- if highlight_field_names == true
79
- fulltext_query.add_highlight
80
- else
81
- highlight_fields = []
82
- Util.Array(highlight_field_names).each do |field_name|
83
- highlight_fields.concat(@setup.text_fields(field_name))
84
- end
85
- fulltext_query.add_highlight(highlight_fields)
86
- end
87
- end
88
- if block && fulltext_query
89
- fulltext_dsl = Fulltext.new(fulltext_query, @setup)
90
- Util.instance_eval_or_call(
91
- fulltext_dsl,
92
- &block
93
- )
94
- end
95
- if !field_names && (!fulltext_dsl || !fulltext_dsl.fields_added?)
96
- @setup.all_text_fields.each do |field|
97
- unless fulltext_query.has_fulltext_field?(field)
98
- unless fulltext_dsl && fulltext_dsl.exclude_fields.include?(field.name)
99
- fulltext_query.add_fulltext_field(field, field.default_boost)
100
- end
101
- end
102
- end
103
- end
104
- end
105
- end
106
- alias_method :keywords, :fulltext
107
-
108
- def with(*args)
109
- case args.first
110
- when String, Symbol
111
- if args.length == 1 # NONE
112
- field = @setup.field(args[0].to_sym)
113
- return DSL::RestrictionWithNear.new(field, @scope, @query, false)
114
- end
115
- end
116
-
117
- # else
118
- super
119
- end
120
- end
121
- end
122
- end
@@ -1,193 +0,0 @@
1
- module Sunspot
2
- class Field #:nodoc:
3
- attr_accessor :name # The public-facing name of the field
4
- attr_accessor :type # The Type of the field
5
- attr_accessor :reference # Model class that the value of this field refers to
6
- attr_reader :boost
7
- attr_reader :indexed_name # Name with which this field is indexed internally. Based on public name and type or the +:as+ option.
8
-
9
- #
10
- #
11
- def initialize(name, type, options = {}) #:nodoc
12
- @name, @type = name.to_sym, type
13
- @stored = !!options.delete(:stored)
14
- @more_like_this = !!options.delete(:more_like_this)
15
- set_indexed_name(options)
16
- raise ArgumentError, "Field of type #{type} cannot be used for more_like_this" unless type.accepts_more_like_this? or !@more_like_this
17
- end
18
-
19
- # Convert a value to its representation for Solr indexing. This delegates
20
- # to the #to_indexed method on the field's type.
21
- #
22
- # ==== Parameters
23
- #
24
- # value<Object>:: Value to convert to Solr representation
25
- #
26
- # ==== Returns
27
- #
28
- # String:: Solr representation of the object
29
- #
30
- # ==== Raises
31
- #
32
- # ArgumentError::
33
- # the value is an array, but this field does not allow multiple values
34
- #
35
- def to_indexed(value)
36
- if value.is_a? Array
37
- if @multiple
38
- value.map { |val| to_indexed(val) }
39
- else
40
- raise ArgumentError, "#{name} is not a multiple-value field, so it cannot index values #{value.inspect}"
41
- end
42
- else
43
- @type.to_indexed(value)
44
- end
45
- end
46
-
47
- # Cast the value into the appropriate Ruby class for the field's type
48
- #
49
- # ==== Parameters
50
- #
51
- # value<String>:: Solr's representation of the value
52
- #
53
- # ==== Returns
54
- #
55
- # Object:: The cast value
56
- #
57
- def cast(value)
58
- @type.cast(value)
59
- end
60
-
61
- #
62
- # Whether this field accepts multiple values.
63
- #
64
- # ==== Returns
65
- #
66
- # Boolean:: True if this field accepts multiple values.
67
- #
68
- def multiple?
69
- !!@multiple
70
- end
71
-
72
- #
73
- # Whether this field can be used for more_like_this queries.
74
- # If true, the field is configured to store termVectors.
75
- #
76
- # ==== Returns
77
- #
78
- # Boolean:: True if this field can be used for more_like_this queries.
79
- #
80
- def more_like_this?
81
- !!@more_like_this
82
- end
83
-
84
- def hash
85
- indexed_name.hash
86
- end
87
-
88
- def eql?(field)
89
- indexed_name == field.indexed_name
90
- end
91
- alias_method :==, :eql?
92
-
93
- private
94
-
95
- #
96
- # Determine the indexed name. If the :as option is given use that, otherwise
97
- # create the value based on the indexed_name of the type with additional
98
- # suffixes for multiple, stored, and more_like_this.
99
- #
100
- # ==== Returns
101
- #
102
- # String: The field's indexed name
103
- #
104
- def set_indexed_name(options)
105
- @indexed_name =
106
- if options[:as]
107
- options.delete(:as).to_s
108
- else
109
- "#{@type.indexed_name(@name).to_s}#{'m' if @multiple }#{'s' if @stored}#{'v' if more_like_this?}"
110
- end
111
- end
112
-
113
- end
114
-
115
- #
116
- # FulltextField instances represent fields that are indexed as fulltext.
117
- # These fields are tokenized in the index, and can have boost applied to
118
- # them. They also always allow multiple values (since the only downside of
119
- # allowing multiple values is that it prevents the field from being sortable,
120
- # and sorting on tokenized fields is nonsensical anyway, there is no reason
121
- # to do otherwise). FulltextField instances always have the type TextType.
122
- #
123
- class FulltextField < Field #:nodoc:
124
- attr_reader :default_boost
125
-
126
- def initialize(name, options = {})
127
- super(name, Type::TextType.instance, options)
128
- @multiple = true
129
- @boost = options.delete(:boost)
130
- @default_boost = options.delete(:default_boost)
131
- raise ArgumentError, "Unknown field option #{options.keys.first.inspect} provided for field #{name.inspect}" unless options.empty?
132
- end
133
-
134
- def indexed_name
135
- "#{super}"
136
- end
137
- end
138
-
139
- #
140
- # AttributeField instances encapsulate non-tokenized attribute data.
141
- # AttributeFields can have any type except TextType, and can also have
142
- # a reference (for instantiated facets), optionally allow multiple values
143
- # (false by default), and can store their values (false by default). All
144
- # scoping, sorting, and faceting is done with attribute fields.
145
- #
146
- class AttributeField < Field #:nodoc:
147
- def initialize(name, type, options = {})
148
- @multiple = !!options.delete(:multiple)
149
- super(name, type, options)
150
- @reference =
151
- if (reference = options.delete(:references)).respond_to?(:name)
152
- reference.name
153
- elsif reference.respond_to?(:to_sym)
154
- reference.to_sym
155
- end
156
- raise ArgumentError, "Unknown field option #{options.keys.first.inspect} provided for field #{name.inspect}" unless options.empty?
157
- end
158
-
159
- end
160
-
161
- class TypeField #:nodoc:
162
- class <<self
163
- def instance
164
- @instance ||= new
165
- end
166
- end
167
-
168
- def indexed_name
169
- 'type'
170
- end
171
-
172
- def to_indexed(clazz)
173
- clazz.name
174
- end
175
- end
176
-
177
- class IdField #:nodoc:
178
- class <<self
179
- def instance
180
- @instance ||= new
181
- end
182
- end
183
-
184
- def indexed_name
185
- 'id'
186
- end
187
-
188
- def to_indexed(id)
189
- id.to_s
190
- end
191
- end
192
- end
193
-
@@ -1,129 +0,0 @@
1
- module Sunspot
2
- #
3
- # The FieldFactory module contains classes for generating fields. FieldFactory
4
- # implementation classes should implement a #build method, although the arity
5
- # of the method depends on the type of factory. They also must implement a
6
- # #populate_document method, which extracts field data from a given model and
7
- # adds it into the Solr document for indexing.
8
- #
9
- module FieldFactory #:nodoc:all
10
- #
11
- # Base class for field factories.
12
- #
13
- class Abstract
14
- attr_reader :name
15
-
16
- def initialize(name, options = {}, &block)
17
- @name = name.to_sym
18
- @data_extractor =
19
- if block
20
- DataExtractor::BlockExtractor.new(&block)
21
- else
22
- DataExtractor::AttributeExtractor.new(options.delete(:using) || name)
23
- end
24
- end
25
- end
26
-
27
- #
28
- # A StaticFieldFactory generates normal static fields. Each factory instance
29
- # contains an eager-initialized field instance, which is returned by the
30
- # #build method.
31
- #
32
- class Static < Abstract
33
- def initialize(name, type, options = {}, &block)
34
- super(name, options, &block)
35
- unless name.to_s =~ /^\w+$/
36
- raise ArgumentError, "Invalid field name #{name}: only letters, numbers, and underscores are allowed."
37
- end
38
- @field =
39
- if type.is_a?(Type::TextType)
40
- FulltextField.new(name, options)
41
- else
42
- AttributeField.new(name, type, options)
43
- end
44
- end
45
-
46
- #
47
- # Return the field instance built by this factory
48
- #
49
- def build
50
- @field
51
- end
52
-
53
- #
54
- # Extract the encapsulated field's data from the given model and add it
55
- # into the Solr document for indexing.
56
- #
57
- def populate_document(document, model) #:nodoc:
58
- unless (value = @data_extractor.value_for(model)).nil?
59
- Util.Array(@field.to_indexed(value)).each do |scalar_value|
60
- options = {}
61
- options[:boost] = @field.boost if @field.boost
62
- document.add_field(
63
- @field.indexed_name.to_sym,
64
- scalar_value,
65
- options
66
- )
67
- end
68
- end
69
- end
70
-
71
- #
72
- # A unique signature identifying this field by name and type.
73
- #
74
- def signature
75
- [@field.name, @field.type]
76
- end
77
- end
78
-
79
- #
80
- # DynamicFieldFactories create dynamic field instances based on dynamic
81
- # configuration.
82
- #
83
- class Dynamic < Abstract
84
- attr_accessor :name, :type
85
-
86
- def initialize(name, type, options = {}, &block)
87
- super(name, options, &block)
88
- @type, @options = type, options
89
- end
90
-
91
- #
92
- # Build a field based on the dynamic name given.
93
- #
94
- def build(dynamic_name)
95
- AttributeField.new("#{@name}:#{dynamic_name}", @type, @options.dup)
96
- end
97
- #
98
- # This alias allows a DynamicFieldFactory to be used in place of a Setup
99
- # or CompositeSetup instance by query components.
100
- #
101
- alias_method :field, :build
102
-
103
- #
104
- # Generate dynamic fields based on hash returned by data accessor and
105
- # add the field data to the document.
106
- #
107
- def populate_document(document, model)
108
- if values = @data_extractor.value_for(model)
109
- values.each_pair do |dynamic_name, value|
110
- field_instance = build(dynamic_name)
111
- Util.Array(field_instance.to_indexed(value)).each do |scalar_value|
112
- document.add_field(
113
- field_instance.indexed_name.to_sym,
114
- scalar_value
115
- )
116
- end
117
- end
118
- end
119
- end
120
-
121
- #
122
- # Unique signature identifying this dynamic field based on name and type
123
- #
124
- def signature
125
- [@name, @type]
126
- end
127
- end
128
- end
129
- end