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,35 +0,0 @@
1
- module Sunspot
2
- module Search
3
- class DateFacet
4
- def initialize(field, search, options)
5
- @field, @search, @options = field, search, options
6
- end
7
-
8
- def field_name
9
- @field.name
10
- end
11
-
12
- def rows
13
- @rows ||=
14
- begin
15
- data = @search.facet_response['facet_dates'][@field.indexed_name]
16
- gap = (@options[:time_interval] || 86400).to_i
17
- rows = []
18
- data.each_pair do |value, count|
19
- if value =~ /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/
20
- start_time = @field.cast(value)
21
- end_time = start_time + gap
22
- rows << FacetRow.new(start_time..end_time, count, self)
23
- end
24
- end
25
- if @options[:sort] == :count
26
- rows.sort! { |lrow, rrow| rrow.count <=> lrow.count }
27
- else
28
- rows.sort! { |lrow, rrow| lrow.value.first <=> rrow.value.first }
29
- end
30
- rows
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,27 +0,0 @@
1
- module Sunspot
2
- module Search
3
- class FacetRow
4
- attr_reader :value, :count
5
- attr_writer :instance #:nodoc:
6
-
7
- def initialize(value, count, facet) #:nodoc:
8
- @value, @count, @facet = value, count, facet
9
- end
10
-
11
- #
12
- # Return the instance referenced by this facet row. Only valid for field
13
- # facets whose fields are defined with the :references key.
14
- #
15
- def instance
16
- if !defined?(@instance)
17
- @facet.populate_instances
18
- end
19
- @instance
20
- end
21
-
22
- def inspect
23
- "<Sunspot::Search::FacetRow:#{value.inspect} (#{count})>"
24
- end
25
- end
26
- end
27
- end
@@ -1,88 +0,0 @@
1
- module Sunspot
2
- module Search
3
- #
4
- # A FieldFacet is a facet whose rows are all values for a certain field, in
5
- # contrast to a QueryFacet, whose rows represent arbitrary queries.
6
- #
7
- class FieldFacet < QueryFacet
8
- def initialize(field, search, options) #:nodoc:
9
- super((options[:name] || field.name).to_sym, search, options)
10
- @field = field
11
- end
12
-
13
- def field_name
14
- @field.name
15
- end
16
-
17
- #
18
- # Get the rows returned for this facet.
19
- #
20
- # ==== Options (options)
21
- #
22
- # :verify::
23
- # Only return rows for which the referenced object exists in the data
24
- # store. This option is ignored unless the field associated with this
25
- # facet is configured with a :references argument.
26
- #
27
- # ==== Returns
28
- #
29
- # Array:: Array of FacetRow objects
30
- #
31
- def rows(options = {})
32
- if options[:verify]
33
- verified_rows
34
- else
35
- @rows ||=
36
- begin
37
- rows = super
38
- has_query_facets = !rows.empty?
39
- if @search.facet_response['facet_fields']
40
- if data = @search.facet_response['facet_fields'][key]
41
- data.each_slice(2) do |value, count|
42
- row = FacetRow.new(@field.cast(value), count, self)
43
- rows << row
44
- end
45
- end
46
- end
47
- sort_rows!(rows) if has_query_facets
48
- rows
49
- end
50
- end
51
- end
52
-
53
- #
54
- # If this facet references a model class, populate the rows with instances
55
- # of the model class by loading them out of the appropriate adapter.
56
- #
57
- def populate_instances #:nodoc:
58
- if reference = @field.reference
59
- values_hash = rows.inject({}) do |hash, row|
60
- hash[row.value] = row
61
- hash
62
- end
63
- instances = Adapters::DataAccessor.create(Sunspot::Util.full_const_get(reference)).load_all(
64
- values_hash.keys
65
- )
66
- instances.each do |instance|
67
- values_hash[Adapters::InstanceAdapter.adapt(instance).id].instance = instance
68
- end
69
- true
70
- end
71
- end
72
-
73
- private
74
-
75
- def verified_rows
76
- if @field.reference
77
- @verified_rows ||= rows.select { |row| row.instance }
78
- else
79
- rows
80
- end
81
- end
82
-
83
- def key
84
- @key ||= (@options[:name] || @field.indexed_name).to_s
85
- end
86
- end
87
- end
88
- end
@@ -1,70 +0,0 @@
1
- require 'sunspot/search/paginated_collection'
2
-
3
- module Sunspot
4
- module Search
5
- class FieldGroup
6
- def initialize(field, search) #:nodoc:
7
- @field, @search = field, search
8
- end
9
-
10
- def groups
11
- @groups ||=
12
- if solr_response
13
- paginate_collection(
14
- solr_response['groups'].map do |group|
15
- Group.new(group['groupValue'], group['doclist'], @search)
16
- end
17
- )
18
- end
19
- end
20
-
21
- def matches
22
- if solr_response
23
- solr_response['matches'].to_i
24
- end
25
- end
26
-
27
- def total
28
- if solr_response
29
- solr_response['ngroups'].to_i
30
- end
31
- end
32
-
33
- #
34
- # It populates all grouped hits at once.
35
- # Useful for eager loading fall grouped results at once.
36
- #
37
- def populate_all_hits
38
- # Init a 2 dimension Hash that contains an array per key
39
- id_hit_hash = Hash.new { |hash, key| hash[key] = Hash.new{ |h, k| h[k] = [] } }
40
- groups.each do |g|
41
- # Take all hits to being populated later on
42
- g.hits.each do |hit|
43
- id_hit_hash[hit.class_name][hit.primary_key] |= [hit]
44
- end
45
- end
46
- # Go for each class and load the results' objects into each of the hits
47
- id_hit_hash.each_pair do |class_name, many_hits|
48
- ids = many_hits.keys
49
- data_accessor = @search.data_accessor_for(Util.full_const_get(class_name))
50
- hits_for_class = id_hit_hash[class_name]
51
- data_accessor.load_all(ids).each do |result|
52
- hits = hits_for_class.delete(Adapters::InstanceAdapter.adapt(result).id.to_s)
53
- hits.each{ |hit| hit.result = result }
54
- end
55
- hits_for_class.values.each { |hits| hits.each{|hit| hit.result = nil } }
56
- end
57
- end
58
-
59
- private
60
-
61
- def solr_response
62
- @search.group_response[@field.indexed_name.to_s]
63
- end
64
-
65
- def paginate_collection(collection)
66
- PaginatedCollection.new(collection, @search.query.page, @search.query.per_page, total)
67
- end
68
- end
69
- end
70
- end
@@ -1,54 +0,0 @@
1
- require 'sunspot/search/hit_enumerable'
2
-
3
- module Sunspot
4
- module Search
5
- class Group
6
- attr_reader :value
7
-
8
- include HitEnumerable
9
-
10
- def initialize(value, doclist, search)
11
- @value, @doclist, @search = value, doclist, search
12
- end
13
-
14
- def hits(options = {})
15
- if options[:verify]
16
- super
17
- else
18
- @hits ||= super
19
- end
20
- end
21
-
22
- def verified_hits
23
- @verified_hits ||= super
24
- end
25
-
26
- def results
27
- @results ||= verified_hits.map { |hit| hit.instance }
28
- end
29
-
30
- def highlights_for(doc)
31
- @search.highlights_for(doc)
32
- end
33
-
34
- def solr_docs
35
- @doclist['docs']
36
- end
37
-
38
- def data_accessor_for(clazz)
39
- @search.data_accessor_for(clazz)
40
- end
41
-
42
- #
43
- # The total number of documents matching the query for this group
44
- #
45
- # ==== Returns
46
- #
47
- # Integer:: Total matching documents
48
- #
49
- def total
50
- @doclist['numFound']
51
- end
52
- end
53
- end
54
- end
@@ -1,38 +0,0 @@
1
- module Sunspot
2
- module Search
3
- #
4
- # A Highlight represents a single highlighted fragment of text from a
5
- # document. Depending on the highlighting parameters used for search, there
6
- # may be more than one Highlight object for a given field in a given result.
7
- #
8
- class Highlight
9
- HIGHLIGHT_MATCHER = /@@@hl@@@(.*?)@@@endhl@@@/ #:nodoc:
10
-
11
- #
12
- # The name of the field in which the highlight appeared.
13
- #
14
- attr_reader :field_name
15
-
16
- def initialize(field_name, highlight) #:nodoc:
17
- @field_name = field_name.to_sym
18
- @highlight = highlight.to_s.strip
19
- end
20
-
21
- #
22
- # Returns the highlighted text with formatting according to the template given in &block.
23
- # When no block is given, &lt;em&gt; and &lt;/em&gt; are used to surround the highlight.
24
- #
25
- # ==== Example
26
- #
27
- # search.highlights(:body).first.format { |word| "<strong>#{word}</strong>" }
28
- #
29
- def format(&block)
30
- block ||= proc { |word| "<em>#{word}</em>" }
31
- @highlight.gsub(HIGHLIGHT_MATCHER) do
32
- block.call(Regexp.last_match[1])
33
- end
34
- end
35
- alias_method :formatted, :format
36
- end
37
- end
38
- end
@@ -1,150 +0,0 @@
1
- module Sunspot
2
- module Search
3
- #
4
- # Hit objects represent the raw information returned by Solr for a single
5
- # document. As well as the primary key and class name, hit objects give
6
- # access to stored field values, keyword relevance score, and keyword
7
- # highlighting.
8
- #
9
- class Hit
10
- SPECIAL_KEYS = Set.new(%w(id type score)) #:nodoc:
11
-
12
- #
13
- # Primary key of object associated with this hit, as string.
14
- #
15
- attr_reader :primary_key
16
- #
17
- # Class name of object associated with this hit, as string.
18
- #
19
- attr_reader :class_name
20
- #
21
- # Keyword relevance score associated with this result. Nil if this hit
22
- # is not from a keyword search.
23
- #
24
- attr_reader :score
25
- #
26
-
27
- attr_writer :result #:nodoc:
28
-
29
- def initialize(raw_hit, highlights, search) #:nodoc:
30
- @class_name, @primary_key = *raw_hit['id'].match(/([^ ]+) (.+)/)[1..2]
31
- @score = raw_hit['score']
32
- @search = search
33
- @stored_values = raw_hit
34
- @stored_cache = {}
35
- @highlights = highlights
36
- end
37
-
38
- #
39
- # Returns all highlights for this hit when called without parameters.
40
- # When a field_name is provided, returns only the highlight for this field.
41
- #
42
- def highlights(field_name = nil)
43
- if field_name.nil?
44
- highlights_cache.values.flatten
45
- else
46
- highlights_cache[field_name.to_sym]
47
- end || []
48
- end
49
-
50
- #
51
- # Return the first highlight found for a given field, or nil if there is
52
- # none.
53
- #
54
- def highlight(field_name)
55
- highlights(field_name).first
56
- end
57
-
58
- #
59
- # Retrieve stored field value. For any attribute field configured with
60
- # :stored => true, the Hit object will contain the stored value for
61
- # that field. The value of this field will be typecast according to the
62
- # type of the field.
63
- #
64
- # ==== Parameters
65
- #
66
- # field_name<Symbol>::
67
- # The name of the field for which to retrieve the stored value.
68
- # dynamic_field_name<Symbol>::
69
- # If you want to access a stored dynamic field, this should be the
70
- # dynamic component of the field name.
71
- #
72
- def stored(field_name, dynamic_field_name = nil)
73
- field_key =
74
- if dynamic_field_name
75
- [field_name.to_sym, dynamic_field_name.to_sym]
76
- else
77
- field_name.to_sym
78
- end
79
- return @stored_cache[field_key] if @stored_cache.has_key?(field_key)
80
- @stored_cache[field_key] = stored_value(field_name, dynamic_field_name)
81
- end
82
-
83
- #
84
- # Retrieve the instance associated with this hit. This is lazy-loaded, but
85
- # the first time it is called on any hit, all the hits for the search will
86
- # load their instances using the adapter's #load_all method.
87
- #
88
- def result
89
- return @result if defined?(@result)
90
- @search.populate_hits
91
- @result
92
- end
93
- alias_method :instance, :result
94
-
95
- def inspect #:nodoc:
96
- "#<Sunspot::Search::Hit:#{@class_name} #{@primary_key}>"
97
- end
98
-
99
- #
100
- # Returns the instance primary key when the Hit is used to generate urls
101
- # For example, using a search that stores the :name attribute:
102
- #
103
- # hits = Sunspot.search(Object) do ...
104
- #
105
- # hits.each do |hit|
106
- # link_to hit.stored(:name), edit_object_path(hit)
107
- # end
108
- #
109
- def to_param
110
- self.primary_key
111
- end
112
-
113
- private
114
-
115
- def setup
116
- @setup ||= Sunspot::Setup.for(Util.full_const_get(@class_name))
117
- end
118
-
119
- def highlights_cache
120
- @highlights_cache ||=
121
- begin
122
- cache = {}
123
- if @highlights
124
- @highlights.each_pair do |indexed_field_name, highlight_strings|
125
- field_name = indexed_field_name.sub(/_[a-z]+$/, '').to_sym
126
- cache[field_name] = highlight_strings.map do |highlight_string|
127
- Highlight.new(field_name, highlight_string)
128
- end
129
- end
130
- end
131
- cache
132
- end
133
- end
134
-
135
- def stored_value(field_name, dynamic_field_name)
136
- setup.stored_fields(field_name, dynamic_field_name).each do |field|
137
- value = @stored_values[field.indexed_name]
138
-
139
- if Array === value
140
- return value.map { |item| field.cast(item) }
141
- elsif !value.nil?
142
- return field.cast(value)
143
- end
144
- end
145
-
146
- nil
147
- end
148
- end
149
- end
150
- end