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.
- data/.gitignore +6 -10
- data/{sunspot_rails/.rspec → .rspec} +0 -0
- data/{sunspot_rails/History.txt → History.txt} +0 -0
- data/{sunspot/LICENSE → LICENSE} +0 -0
- data/{sunspot_rails/MIT-LICENSE → MIT-LICENSE} +0 -0
- data/{sunspot_rails/README.rdoc → README.rdoc} +0 -0
- data/Rakefile +12 -32
- data/{sunspot_rails/TODO → TODO} +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/rdoc.rake +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/release.rake +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/spec.rake +0 -0
- data/{sunspot/tasks → dev_tasks}/todo.rake +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-2.3.14 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.0.15 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.1.6 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.2.6 +0 -0
- data/{sunspot_rails/generators → generators}/sunspot/sunspot_generator.rb +0 -0
- data/{sunspot_rails/generators → generators}/sunspot/templates/sunspot.yml +0 -0
- data/{sunspot_rails/install.rb → install.rb} +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails.rb +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/install_generator.rb +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/templates/config/sunspot.yml +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/adapters.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/configuration.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/init.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/log_subscriber.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/railtie.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/railties/controller_runtime.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/request_lifecycle.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/searchable.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/server.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/solr_instrumentation.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/solr_logging.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/spec_helper.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/stub_session_proxy.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/tasks.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot_rails.rb +0 -0
- data/{sunspot_rails/spec → spec}/configuration_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/model_lifecycle_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/model_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/controllers/application_controller.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/controllers/posts_controller.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/author.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/blog.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/location.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/photo_post.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_auto.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_default_scope.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/boot.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/preinitializer.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/routes.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/sunspot.yml +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/db/schema.rb +0 -0
- data/{sunspot_rails/spec → spec}/request_lifecycle_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/schema.rb +0 -0
- data/{sunspot_rails/spec → spec}/searchable_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/server_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/session_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/shared_examples/indexed_after_save.rb +0 -0
- data/{sunspot_rails/spec → spec}/shared_examples/not_indexed_after_save.rb +0 -0
- data/{sunspot_rails/spec → spec}/spec_helper.rb +0 -0
- data/{sunspot_rails/spec → spec}/stub_session_proxy_spec.rb +0 -0
- data/{sunspot_rails/sunspot_rails.gemspec → sunspot_rails.gemspec} +0 -0
- metadata +102 -305
- data/.travis.yml +0 -35
- data/README.md +0 -863
- data/ci/travis.sh +0 -67
- data/sunspot/.gitignore +0 -13
- data/sunspot/Gemfile +0 -5
- data/sunspot/History.txt +0 -258
- data/sunspot/Rakefile +0 -13
- data/sunspot/TODO +0 -13
- data/sunspot/lib/light_config.rb +0 -40
- data/sunspot/lib/sunspot.rb +0 -579
- data/sunspot/lib/sunspot/adapters.rb +0 -349
- data/sunspot/lib/sunspot/batcher.rb +0 -62
- data/sunspot/lib/sunspot/class_set.rb +0 -23
- data/sunspot/lib/sunspot/composite_setup.rb +0 -202
- data/sunspot/lib/sunspot/configuration.rb +0 -53
- data/sunspot/lib/sunspot/data_extractor.rb +0 -50
- data/sunspot/lib/sunspot/dsl.rb +0 -5
- data/sunspot/lib/sunspot/dsl/adjustable.rb +0 -47
- data/sunspot/lib/sunspot/dsl/field_group.rb +0 -57
- data/sunspot/lib/sunspot/dsl/field_query.rb +0 -345
- data/sunspot/lib/sunspot/dsl/fields.rb +0 -103
- data/sunspot/lib/sunspot/dsl/fulltext.rb +0 -243
- data/sunspot/lib/sunspot/dsl/function.rb +0 -27
- data/sunspot/lib/sunspot/dsl/functional.rb +0 -44
- data/sunspot/lib/sunspot/dsl/more_like_this_query.rb +0 -56
- data/sunspot/lib/sunspot/dsl/paginatable.rb +0 -32
- data/sunspot/lib/sunspot/dsl/query_facet.rb +0 -36
- data/sunspot/lib/sunspot/dsl/restriction.rb +0 -25
- data/sunspot/lib/sunspot/dsl/restriction_with_near.rb +0 -160
- data/sunspot/lib/sunspot/dsl/scope.rb +0 -214
- data/sunspot/lib/sunspot/dsl/search.rb +0 -30
- data/sunspot/lib/sunspot/dsl/standard_query.rb +0 -122
- data/sunspot/lib/sunspot/field.rb +0 -193
- data/sunspot/lib/sunspot/field_factory.rb +0 -129
- data/sunspot/lib/sunspot/indexer.rb +0 -136
- data/sunspot/lib/sunspot/query.rb +0 -11
- data/sunspot/lib/sunspot/query/abstract_field_facet.rb +0 -55
- data/sunspot/lib/sunspot/query/bbox.rb +0 -15
- data/sunspot/lib/sunspot/query/boost_query.rb +0 -24
- data/sunspot/lib/sunspot/query/common_query.rb +0 -96
- data/sunspot/lib/sunspot/query/composite_fulltext.rb +0 -36
- data/sunspot/lib/sunspot/query/connective.rb +0 -206
- data/sunspot/lib/sunspot/query/date_field_facet.rb +0 -14
- data/sunspot/lib/sunspot/query/dismax.rb +0 -132
- data/sunspot/lib/sunspot/query/field_facet.rb +0 -41
- data/sunspot/lib/sunspot/query/field_group.rb +0 -37
- data/sunspot/lib/sunspot/query/filter.rb +0 -38
- data/sunspot/lib/sunspot/query/function_query.rb +0 -52
- data/sunspot/lib/sunspot/query/geo.rb +0 -53
- data/sunspot/lib/sunspot/query/geofilt.rb +0 -16
- data/sunspot/lib/sunspot/query/highlighting.rb +0 -62
- data/sunspot/lib/sunspot/query/more_like_this.rb +0 -61
- data/sunspot/lib/sunspot/query/more_like_this_query.rb +0 -12
- data/sunspot/lib/sunspot/query/pagination.rb +0 -42
- data/sunspot/lib/sunspot/query/query_facet.rb +0 -53
- data/sunspot/lib/sunspot/query/range_facet.rb +0 -15
- data/sunspot/lib/sunspot/query/restriction.rb +0 -308
- data/sunspot/lib/sunspot/query/scope.rb +0 -9
- data/sunspot/lib/sunspot/query/sort.rb +0 -109
- data/sunspot/lib/sunspot/query/sort_composite.rb +0 -34
- data/sunspot/lib/sunspot/query/standard_query.rb +0 -16
- data/sunspot/lib/sunspot/query/text_field_boost.rb +0 -17
- data/sunspot/lib/sunspot/schema.rb +0 -151
- data/sunspot/lib/sunspot/search.rb +0 -9
- data/sunspot/lib/sunspot/search/abstract_search.rb +0 -286
- data/sunspot/lib/sunspot/search/date_facet.rb +0 -35
- data/sunspot/lib/sunspot/search/facet_row.rb +0 -27
- data/sunspot/lib/sunspot/search/field_facet.rb +0 -88
- data/sunspot/lib/sunspot/search/field_group.rb +0 -70
- data/sunspot/lib/sunspot/search/group.rb +0 -54
- data/sunspot/lib/sunspot/search/highlight.rb +0 -38
- data/sunspot/lib/sunspot/search/hit.rb +0 -150
- data/sunspot/lib/sunspot/search/hit_enumerable.rb +0 -68
- data/sunspot/lib/sunspot/search/more_like_this_search.rb +0 -31
- data/sunspot/lib/sunspot/search/paginated_collection.rb +0 -57
- data/sunspot/lib/sunspot/search/query_facet.rb +0 -67
- data/sunspot/lib/sunspot/search/range_facet.rb +0 -37
- data/sunspot/lib/sunspot/search/standard_search.rb +0 -21
- data/sunspot/lib/sunspot/session.rb +0 -262
- data/sunspot/lib/sunspot/session_proxy.rb +0 -95
- data/sunspot/lib/sunspot/session_proxy/abstract_session_proxy.rb +0 -29
- data/sunspot/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +0 -66
- data/sunspot/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +0 -89
- data/sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb +0 -43
- data/sunspot/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb +0 -67
- data/sunspot/lib/sunspot/session_proxy/sharding_session_proxy.rb +0 -222
- data/sunspot/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +0 -42
- data/sunspot/lib/sunspot/session_proxy/thread_local_session_proxy.rb +0 -37
- data/sunspot/lib/sunspot/setup.rb +0 -350
- data/sunspot/lib/sunspot/text_field_setup.rb +0 -29
- data/sunspot/lib/sunspot/type.rb +0 -393
- data/sunspot/lib/sunspot/util.rb +0 -252
- data/sunspot/lib/sunspot/version.rb +0 -3
- data/sunspot/script/console +0 -10
- data/sunspot/spec/api/adapters_spec.rb +0 -68
- data/sunspot/spec/api/batcher_spec.rb +0 -112
- data/sunspot/spec/api/binding_spec.rb +0 -50
- data/sunspot/spec/api/class_set_spec.rb +0 -24
- data/sunspot/spec/api/hit_enumerable_spec.rb +0 -47
- data/sunspot/spec/api/indexer/attributes_spec.rb +0 -149
- data/sunspot/spec/api/indexer/batch_spec.rb +0 -72
- data/sunspot/spec/api/indexer/dynamic_fields_spec.rb +0 -42
- data/sunspot/spec/api/indexer/fixed_fields_spec.rb +0 -57
- data/sunspot/spec/api/indexer/fulltext_spec.rb +0 -43
- data/sunspot/spec/api/indexer/removal_spec.rb +0 -53
- data/sunspot/spec/api/indexer/spec_helper.rb +0 -1
- data/sunspot/spec/api/indexer_spec.rb +0 -14
- data/sunspot/spec/api/query/advanced_manipulation_examples.rb +0 -35
- data/sunspot/spec/api/query/connectives_examples.rb +0 -201
- data/sunspot/spec/api/query/dsl_spec.rb +0 -18
- data/sunspot/spec/api/query/dynamic_fields_examples.rb +0 -165
- data/sunspot/spec/api/query/faceting_examples.rb +0 -497
- data/sunspot/spec/api/query/fulltext_examples.rb +0 -313
- data/sunspot/spec/api/query/function_spec.rb +0 -79
- data/sunspot/spec/api/query/geo_examples.rb +0 -68
- data/sunspot/spec/api/query/group_spec.rb +0 -32
- data/sunspot/spec/api/query/highlighting_examples.rb +0 -245
- data/sunspot/spec/api/query/more_like_this_spec.rb +0 -140
- data/sunspot/spec/api/query/ordering_pagination_examples.rb +0 -116
- data/sunspot/spec/api/query/scope_examples.rb +0 -275
- data/sunspot/spec/api/query/spatial_examples.rb +0 -27
- data/sunspot/spec/api/query/spec_helper.rb +0 -1
- data/sunspot/spec/api/query/standard_spec.rb +0 -29
- data/sunspot/spec/api/query/text_field_scoping_examples.rb +0 -30
- data/sunspot/spec/api/query/types_spec.rb +0 -20
- data/sunspot/spec/api/search/dynamic_fields_spec.rb +0 -33
- data/sunspot/spec/api/search/faceting_spec.rb +0 -360
- data/sunspot/spec/api/search/highlighting_spec.rb +0 -69
- data/sunspot/spec/api/search/hits_spec.rb +0 -147
- data/sunspot/spec/api/search/paginated_collection_spec.rb +0 -36
- data/sunspot/spec/api/search/results_spec.rb +0 -72
- data/sunspot/spec/api/search/search_spec.rb +0 -23
- data/sunspot/spec/api/search/spec_helper.rb +0 -1
- data/sunspot/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +0 -85
- data/sunspot/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +0 -30
- data/sunspot/spec/api/session_proxy/master_slave_session_proxy_spec.rb +0 -41
- data/sunspot/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +0 -78
- data/sunspot/spec/api/session_proxy/sharding_session_proxy_spec.rb +0 -77
- data/sunspot/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +0 -24
- data/sunspot/spec/api/session_proxy/spec_helper.rb +0 -9
- data/sunspot/spec/api/session_proxy/thread_local_session_proxy_spec.rb +0 -39
- data/sunspot/spec/api/session_spec.rb +0 -232
- data/sunspot/spec/api/spec_helper.rb +0 -3
- data/sunspot/spec/api/sunspot_spec.rb +0 -29
- data/sunspot/spec/ext.rb +0 -11
- data/sunspot/spec/helpers/indexer_helper.rb +0 -17
- data/sunspot/spec/helpers/integration_helper.rb +0 -8
- data/sunspot/spec/helpers/mock_session_helper.rb +0 -13
- data/sunspot/spec/helpers/query_helper.rb +0 -26
- data/sunspot/spec/helpers/search_helper.rb +0 -68
- data/sunspot/spec/integration/dynamic_fields_spec.rb +0 -57
- data/sunspot/spec/integration/faceting_spec.rb +0 -330
- data/sunspot/spec/integration/field_grouping_spec.rb +0 -100
- data/sunspot/spec/integration/geospatial_spec.rb +0 -96
- data/sunspot/spec/integration/highlighting_spec.rb +0 -44
- data/sunspot/spec/integration/indexing_spec.rb +0 -55
- data/sunspot/spec/integration/keyword_search_spec.rb +0 -317
- data/sunspot/spec/integration/local_search_spec.rb +0 -64
- data/sunspot/spec/integration/more_like_this_spec.rb +0 -43
- data/sunspot/spec/integration/scoped_search_spec.rb +0 -386
- data/sunspot/spec/integration/stored_fields_spec.rb +0 -12
- data/sunspot/spec/integration/test_pagination.rb +0 -43
- data/sunspot/spec/integration/unicode_spec.rb +0 -15
- data/sunspot/spec/mocks/adapters.rb +0 -33
- data/sunspot/spec/mocks/blog.rb +0 -3
- data/sunspot/spec/mocks/comment.rb +0 -21
- data/sunspot/spec/mocks/connection.rb +0 -126
- data/sunspot/spec/mocks/mock_adapter.rb +0 -30
- data/sunspot/spec/mocks/mock_class_sharding_session_proxy.rb +0 -24
- data/sunspot/spec/mocks/mock_record.rb +0 -52
- data/sunspot/spec/mocks/mock_sharding_session_proxy.rb +0 -15
- data/sunspot/spec/mocks/photo.rb +0 -11
- data/sunspot/spec/mocks/post.rb +0 -86
- data/sunspot/spec/mocks/super_class.rb +0 -2
- data/sunspot/spec/mocks/user.rb +0 -13
- data/sunspot/spec/spec_helper.rb +0 -40
- data/sunspot/sunspot.gemspec +0 -37
- data/sunspot/tasks/rdoc.rake +0 -27
- data/sunspot/tasks/schema.rake +0 -19
- data/sunspot_rails/.gitignore +0 -7
- data/sunspot_rails/LICENSE +0 -18
- data/sunspot_rails/Rakefile +0 -17
- data/sunspot_rails/dev_tasks/todo.rake +0 -4
- data/sunspot_solr/Gemfile +0 -3
- data/sunspot_solr/README.rdoc +0 -24
- data/sunspot_solr/bin/sunspot-installer +0 -20
- data/sunspot_solr/bin/sunspot-solr +0 -80
- data/sunspot_solr/lib/sunspot/solr/installer.rb +0 -25
- data/sunspot_solr/lib/sunspot/solr/installer/config_installer.rb +0 -46
- data/sunspot_solr/lib/sunspot/solr/installer/task_helper.rb +0 -13
- data/sunspot_solr/lib/sunspot/solr/java.rb +0 -10
- data/sunspot_solr/lib/sunspot/solr/railtie.rb +0 -15
- data/sunspot_solr/lib/sunspot/solr/server.rb +0 -223
- data/sunspot_solr/lib/sunspot/solr/tasks.rb +0 -49
- data/sunspot_solr/lib/sunspot_solr.rb +0 -5
- data/sunspot_solr/solr/README.txt +0 -42
- data/sunspot_solr/solr/etc/jetty.xml +0 -219
- data/sunspot_solr/solr/etc/webdefault.xml +0 -379
- data/sunspot_solr/solr/lib/jetty-6.1.26-patched-JETTY-1340.jar +0 -0
- data/sunspot_solr/solr/lib/jetty-util-6.1.26-patched-JETTY-1340.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
- data/sunspot_solr/solr/lib/servlet-api-2.5-20081211.jar +0 -0
- data/sunspot_solr/solr/solr/.gitignore +0 -1
- data/sunspot_solr/solr/solr/README.txt +0 -54
- data/sunspot_solr/solr/solr/conf/admin-extra.html +0 -31
- data/sunspot_solr/solr/solr/conf/elevate.xml +0 -36
- data/sunspot_solr/solr/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
- data/sunspot_solr/solr/solr/conf/protwords.txt +0 -21
- data/sunspot_solr/solr/solr/conf/schema.xml +0 -250
- data/sunspot_solr/solr/solr/conf/scripts.conf +0 -24
- data/sunspot_solr/solr/solr/conf/solrconfig.xml +0 -934
- data/sunspot_solr/solr/solr/conf/spellings.txt +0 -2
- data/sunspot_solr/solr/solr/conf/stopwords.txt +0 -58
- data/sunspot_solr/solr/solr/conf/synonyms.txt +0 -31
- data/sunspot_solr/solr/solr/conf/xslt/example.xsl +0 -132
- data/sunspot_solr/solr/solr/conf/xslt/example_atom.xsl +0 -67
- data/sunspot_solr/solr/solr/conf/xslt/example_rss.xsl +0 -66
- data/sunspot_solr/solr/solr/conf/xslt/luke.xsl +0 -337
- data/sunspot_solr/solr/start.jar +0 -0
- data/sunspot_solr/solr/webapps/solr.war +0 -0
- data/sunspot_solr/spec/server_spec.rb +0 -98
- data/sunspot_solr/spec/spec_helper.rb +0 -18
- data/sunspot_solr/sunspot_solr.gemspec +0 -37
- data/tools/gem_tasks.rb +0 -69
@@ -1,68 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Search
|
3
|
-
module HitEnumerable #:nodoc:
|
4
|
-
def hits(options = {})
|
5
|
-
if options[:verify]
|
6
|
-
verified_hits
|
7
|
-
elsif solr_docs
|
8
|
-
solr_docs.map { |d| Hit.new(d, highlights_for(d), self) }
|
9
|
-
else
|
10
|
-
[]
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def verified_hits
|
15
|
-
hits.select { |h| h.result }
|
16
|
-
end
|
17
|
-
|
18
|
-
#
|
19
|
-
# Populate the Hit objects with their instances. This is invoked the first
|
20
|
-
# time any hit has its instance requested, and all hits are loaded as a
|
21
|
-
# batch.
|
22
|
-
#
|
23
|
-
def populate_hits #:nodoc:
|
24
|
-
id_hit_hash = Hash.new { |h, k| h[k] = {} }
|
25
|
-
hits.each do |hit|
|
26
|
-
id_hit_hash[hit.class_name][hit.primary_key] = hit
|
27
|
-
end
|
28
|
-
id_hit_hash.each_pair do |class_name, hits|
|
29
|
-
ids = hits.map { |id, hit| hit.primary_key }
|
30
|
-
data_accessor = data_accessor_for(Util.full_const_get(class_name))
|
31
|
-
hits_for_class = id_hit_hash[class_name]
|
32
|
-
data_accessor.load_all(ids).each do |result|
|
33
|
-
hit = hits_for_class.delete(Adapters::InstanceAdapter.adapt(result).id.to_s)
|
34
|
-
hit.result = result
|
35
|
-
end
|
36
|
-
hits_for_class.values.each { |hit| hit.result = nil }
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
#
|
41
|
-
# Convenience method to iterate over hit and result objects. Block is
|
42
|
-
# yielded a Sunspot::Server::Hit instance and a Sunspot::Server::Result
|
43
|
-
# instance.
|
44
|
-
#
|
45
|
-
# Note that this method iterates over verified hits (see #hits method
|
46
|
-
# for more information).
|
47
|
-
#
|
48
|
-
def each_hit_with_result
|
49
|
-
return enum_for(:each_hit_with_result) unless block_given?
|
50
|
-
verified_hits.each { |hit| yield hit, hit.result }
|
51
|
-
end
|
52
|
-
|
53
|
-
#
|
54
|
-
# Get the data accessor that will be used to load a particular class out of
|
55
|
-
# persistent storage. Data accessors can implement any methods that may be
|
56
|
-
# useful for refining how data is loaded out of storage. When building a
|
57
|
-
# search manually (e.g., using the Sunspot#new_search method), this should
|
58
|
-
# be used before calling #execute(). Use the
|
59
|
-
# Sunspot::DSL::Search#data_accessor_for method when building searches using
|
60
|
-
# the block DSL.
|
61
|
-
#
|
62
|
-
def data_accessor_for(clazz) #:nodoc:
|
63
|
-
@registry ||= Sunspot::Adapters::Registry.new
|
64
|
-
@registry.retrieve(clazz)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
#
|
3
|
-
# This class encapsulates the results of a Solr MoreLikeThis search. It provides access
|
4
|
-
# to search results, total result count, and pagination information.
|
5
|
-
# Instances of MoreLikeThis are returned by the Sunspot.more_like_this and
|
6
|
-
# Sunspot.new_more_like_this methods.
|
7
|
-
#
|
8
|
-
module Search
|
9
|
-
class MoreLikeThisSearch < AbstractSearch
|
10
|
-
def execute
|
11
|
-
if @query.more_like_this.fields.empty?
|
12
|
-
@setup.all_more_like_this_fields.each do |field|
|
13
|
-
@query.more_like_this.add_field(field)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
super
|
17
|
-
end
|
18
|
-
|
19
|
-
def request_handler
|
20
|
-
super || :mlt
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
# override
|
26
|
-
def dsl
|
27
|
-
DSL::MoreLikeThisQuery.new(self, @query, @setup)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Search
|
3
|
-
|
4
|
-
class PaginatedCollection
|
5
|
-
instance_methods.each { |m| undef_method m unless m =~ /^__|instance_eval|object_id/ }
|
6
|
-
|
7
|
-
attr_reader :current_page, :per_page
|
8
|
-
attr_accessor :total_count
|
9
|
-
alias :total_entries :total_count
|
10
|
-
alias :total_entries= :total_count=
|
11
|
-
alias :limit_value :per_page
|
12
|
-
|
13
|
-
def initialize(collection, page, per_page, total)
|
14
|
-
@collection = collection
|
15
|
-
@current_page = page
|
16
|
-
@per_page = per_page
|
17
|
-
@total_count = total
|
18
|
-
end
|
19
|
-
|
20
|
-
def total_pages
|
21
|
-
(total_count.to_f / per_page).ceil
|
22
|
-
end
|
23
|
-
alias :num_pages :total_pages
|
24
|
-
|
25
|
-
def first_page?
|
26
|
-
current_page == 1
|
27
|
-
end
|
28
|
-
|
29
|
-
def last_page?
|
30
|
-
current_page >= total_pages
|
31
|
-
end
|
32
|
-
|
33
|
-
def previous_page
|
34
|
-
current_page > 1 ? (current_page - 1) : nil
|
35
|
-
end
|
36
|
-
|
37
|
-
def next_page
|
38
|
-
current_page < total_pages ? (current_page + 1) : nil
|
39
|
-
end
|
40
|
-
|
41
|
-
def out_of_bounds?
|
42
|
-
current_page > total_pages
|
43
|
-
end
|
44
|
-
|
45
|
-
def offset
|
46
|
-
(current_page - 1) * per_page
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def method_missing(method, *args, &block)
|
52
|
-
@collection.send(method, *args, &block)
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Search
|
3
|
-
class QueryFacet
|
4
|
-
RequestedFacet = Struct.new(:label, :boolean_phrase) #:nodoc:
|
5
|
-
|
6
|
-
attr_reader :name
|
7
|
-
|
8
|
-
def initialize(name, search, options) #:nodoc:
|
9
|
-
@name, @search, @options = name, search, options
|
10
|
-
@requested_facets = []
|
11
|
-
end
|
12
|
-
|
13
|
-
def rows(options = {})
|
14
|
-
@rows ||=
|
15
|
-
begin
|
16
|
-
data = @search.facet_response['facet_queries']
|
17
|
-
rows = []
|
18
|
-
minimum_count =
|
19
|
-
case
|
20
|
-
when @options[:minimum_count] then @options[:minimum_count]
|
21
|
-
when @options[:zeros] then 0
|
22
|
-
else 1
|
23
|
-
end
|
24
|
-
@requested_facets.each do |requested_facet|
|
25
|
-
count = data[requested_facet.boolean_phrase] || 0
|
26
|
-
if count >= minimum_count
|
27
|
-
rows << FacetRow.new(requested_facet.label, count, self)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
sort_rows!(rows)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_row(label, boolean_phrase) #:nodoc:
|
35
|
-
@requested_facets << RequestedFacet.new(label, boolean_phrase)
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def sort_rows!(rows)
|
41
|
-
case @options[:sort] || (:count if limit)
|
42
|
-
when :count
|
43
|
-
rows.sort! { |lrow, rrow| rrow.count <=> lrow.count }
|
44
|
-
when :index
|
45
|
-
rows.sort! do |lrow, rrow|
|
46
|
-
if lrow.respond_to?(:<=>)
|
47
|
-
lrow.value <=> rrow.value
|
48
|
-
elsif lrow.respond_to?(:first) && rrow.respond_to?(:first) && lrow.first.respond_to?(:<=>)
|
49
|
-
lrow.first.value <=> rrow.first.value
|
50
|
-
else
|
51
|
-
lrow.value.to_s <=> rrow.value.to_s
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
if limit
|
56
|
-
rows.replace(rows.first(limit))
|
57
|
-
end
|
58
|
-
rows
|
59
|
-
end
|
60
|
-
|
61
|
-
def limit
|
62
|
-
return @limit if defined?(@limit)
|
63
|
-
@limit = (@options[:limit].to_i if @options[:limit].to_i > 0)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Search
|
3
|
-
class RangeFacet
|
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_ranges'][@field.indexed_name]
|
16
|
-
gap = (@options[:range_interval] || 10).to_i
|
17
|
-
rows = []
|
18
|
-
|
19
|
-
if data['counts']
|
20
|
-
Hash[*data['counts']].each_pair do |start_str, count|
|
21
|
-
start = start_str.to_f
|
22
|
-
finish = start + gap
|
23
|
-
rows << FacetRow.new(start..finish, count, self)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
if @options[:sort] == :count
|
28
|
-
rows.sort! { |lrow, rrow| rrow.count <=> lrow.count }
|
29
|
-
else
|
30
|
-
rows.sort! { |lrow, rrow| lrow.value.first <=> rrow.value.first }
|
31
|
-
end
|
32
|
-
rows
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Search
|
3
|
-
#
|
4
|
-
# This class encapsulates the results of a Solr search. It provides access
|
5
|
-
# to search results, total result count, facets, and pagination information.
|
6
|
-
# Instances of Search are returned by the Sunspot.search and
|
7
|
-
# Sunspot.new_search methods.
|
8
|
-
#
|
9
|
-
class StandardSearch < AbstractSearch
|
10
|
-
def request_handler
|
11
|
-
super || :select
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def dsl
|
17
|
-
DSL::Search.new(self, @setup)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,262 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
#
|
3
|
-
# A Sunspot session encapsulates a connection to Solr and a set of
|
4
|
-
# configuration choices. Though users of Sunspot may manually instantiate
|
5
|
-
# Session objects, in the general case it's easier to use the singleton
|
6
|
-
# stored in the Sunspot module. Since the Sunspot module provides all of
|
7
|
-
# the instance methods of Session as class methods, they are not documented
|
8
|
-
# again here.
|
9
|
-
#
|
10
|
-
class Session
|
11
|
-
class <<self
|
12
|
-
attr_writer :connection_class #:nodoc:
|
13
|
-
|
14
|
-
#
|
15
|
-
# For testing purposes
|
16
|
-
#
|
17
|
-
def connection_class #:nodoc:
|
18
|
-
@connection_class ||= RSolr
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
#
|
23
|
-
# Sunspot::Configuration object for this session
|
24
|
-
#
|
25
|
-
attr_reader :config
|
26
|
-
|
27
|
-
#
|
28
|
-
# Sessions are initialized with a Sunspot configuration and a Solr
|
29
|
-
# connection. Usually you will want to stick with the default arguments
|
30
|
-
# when instantiating your own sessions.
|
31
|
-
#
|
32
|
-
def initialize(config = Configuration.build, connection = nil)
|
33
|
-
@config = config
|
34
|
-
yield(@config) if block_given?
|
35
|
-
@connection = connection
|
36
|
-
@deletes = @adds = 0
|
37
|
-
end
|
38
|
-
|
39
|
-
#
|
40
|
-
# See Sunspot.new_search
|
41
|
-
#
|
42
|
-
def new_search(*types, &block)
|
43
|
-
types.flatten!
|
44
|
-
search = Search::StandardSearch.new(
|
45
|
-
connection,
|
46
|
-
setup_for_types(types),
|
47
|
-
Query::StandardQuery.new(types),
|
48
|
-
@config
|
49
|
-
)
|
50
|
-
search.build(&block) if block
|
51
|
-
search
|
52
|
-
end
|
53
|
-
|
54
|
-
#
|
55
|
-
# See Sunspot.search
|
56
|
-
#
|
57
|
-
def search(*types, &block)
|
58
|
-
search = new_search(*types, &block)
|
59
|
-
search.execute
|
60
|
-
end
|
61
|
-
|
62
|
-
#
|
63
|
-
# See Sunspot.new_more_like_this
|
64
|
-
#
|
65
|
-
def new_more_like_this(object, *types, &block)
|
66
|
-
types[0] ||= object.class
|
67
|
-
mlt = Search::MoreLikeThisSearch.new(
|
68
|
-
connection,
|
69
|
-
setup_for_types(types),
|
70
|
-
Query::MoreLikeThisQuery.new(object, types),
|
71
|
-
@config
|
72
|
-
)
|
73
|
-
mlt.build(&block) if block
|
74
|
-
mlt
|
75
|
-
end
|
76
|
-
|
77
|
-
#
|
78
|
-
# See Sunspot.more_like_this
|
79
|
-
#
|
80
|
-
def more_like_this(object, *types, &block)
|
81
|
-
mlt = new_more_like_this(object, *types, &block)
|
82
|
-
mlt.execute
|
83
|
-
end
|
84
|
-
|
85
|
-
#
|
86
|
-
# See Sunspot.index
|
87
|
-
#
|
88
|
-
def index(*objects)
|
89
|
-
objects.flatten!
|
90
|
-
@adds += objects.length
|
91
|
-
indexer.add(objects)
|
92
|
-
end
|
93
|
-
|
94
|
-
#
|
95
|
-
# See Sunspot.index!
|
96
|
-
#
|
97
|
-
def index!(*objects)
|
98
|
-
index(*objects)
|
99
|
-
commit
|
100
|
-
end
|
101
|
-
|
102
|
-
#
|
103
|
-
# See Sunspot.commit
|
104
|
-
#
|
105
|
-
def commit
|
106
|
-
@adds = @deletes = 0
|
107
|
-
connection.commit
|
108
|
-
end
|
109
|
-
|
110
|
-
#
|
111
|
-
# See Sunspot.optimize
|
112
|
-
#
|
113
|
-
def optimize
|
114
|
-
@adds = @deletes = 0
|
115
|
-
connection.optimize
|
116
|
-
end
|
117
|
-
|
118
|
-
#
|
119
|
-
# See Sunspot.remove
|
120
|
-
#
|
121
|
-
def remove(*objects, &block)
|
122
|
-
if block
|
123
|
-
types = objects
|
124
|
-
conjunction = Query::Connective::Conjunction.new
|
125
|
-
if types.length == 1
|
126
|
-
conjunction.add_positive_restriction(TypeField.instance, Query::Restriction::EqualTo, types.first)
|
127
|
-
else
|
128
|
-
conjunction.add_positive_restriction(TypeField.instance, Query::Restriction::AnyOf, types)
|
129
|
-
end
|
130
|
-
dsl = DSL::Scope.new(conjunction, setup_for_types(types))
|
131
|
-
Util.instance_eval_or_call(dsl, &block)
|
132
|
-
indexer.remove_by_scope(conjunction)
|
133
|
-
else
|
134
|
-
objects.flatten!
|
135
|
-
@deletes += objects.length
|
136
|
-
objects.each do |object|
|
137
|
-
indexer.remove(object)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
#
|
143
|
-
# See Sunspot.remove!
|
144
|
-
#
|
145
|
-
def remove!(*objects)
|
146
|
-
remove(*objects)
|
147
|
-
commit
|
148
|
-
end
|
149
|
-
|
150
|
-
#
|
151
|
-
# See Sunspot.remove_by_id
|
152
|
-
#
|
153
|
-
def remove_by_id(clazz, id)
|
154
|
-
class_name =
|
155
|
-
if clazz.is_a?(Class)
|
156
|
-
clazz.name
|
157
|
-
else
|
158
|
-
clazz.to_s
|
159
|
-
end
|
160
|
-
indexer.remove_by_id(class_name, id)
|
161
|
-
end
|
162
|
-
|
163
|
-
#
|
164
|
-
# See Sunspot.remove_by_id!
|
165
|
-
#
|
166
|
-
def remove_by_id!(clazz, id)
|
167
|
-
remove_by_id(clazz, id)
|
168
|
-
commit
|
169
|
-
end
|
170
|
-
|
171
|
-
#
|
172
|
-
# See Sunspot.remove_all
|
173
|
-
#
|
174
|
-
def remove_all(*classes)
|
175
|
-
classes.flatten!
|
176
|
-
if classes.empty?
|
177
|
-
@deletes += 1
|
178
|
-
indexer.remove_all
|
179
|
-
else
|
180
|
-
@deletes += classes.length
|
181
|
-
classes.each { |clazz| indexer.remove_all(clazz) }
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
#
|
186
|
-
# See Sunspot.remove_all!
|
187
|
-
#
|
188
|
-
def remove_all!(*classes)
|
189
|
-
remove_all(*classes)
|
190
|
-
commit
|
191
|
-
end
|
192
|
-
|
193
|
-
#
|
194
|
-
# See Sunspot.dirty?
|
195
|
-
#
|
196
|
-
def dirty?
|
197
|
-
(@deletes + @adds) > 0
|
198
|
-
end
|
199
|
-
|
200
|
-
#
|
201
|
-
# See Sunspot.commit_if_dirty
|
202
|
-
#
|
203
|
-
def commit_if_dirty
|
204
|
-
commit if dirty?
|
205
|
-
end
|
206
|
-
|
207
|
-
#
|
208
|
-
# See Sunspot.delete_dirty?
|
209
|
-
#
|
210
|
-
def delete_dirty?
|
211
|
-
@deletes > 0
|
212
|
-
end
|
213
|
-
|
214
|
-
#
|
215
|
-
# See Sunspot.commit_if_delete_dirty
|
216
|
-
#
|
217
|
-
def commit_if_delete_dirty
|
218
|
-
commit if delete_dirty?
|
219
|
-
end
|
220
|
-
|
221
|
-
#
|
222
|
-
# See Sunspot.batch
|
223
|
-
#
|
224
|
-
def batch
|
225
|
-
indexer.start_batch
|
226
|
-
yield
|
227
|
-
indexer.flush_batch
|
228
|
-
end
|
229
|
-
|
230
|
-
private
|
231
|
-
|
232
|
-
#
|
233
|
-
# Retrieve the Solr connection for this session, creating one if it does not
|
234
|
-
# already exist.
|
235
|
-
#
|
236
|
-
# ==== Returns
|
237
|
-
#
|
238
|
-
# RSolr::Connection::Base:: The connection for this session
|
239
|
-
#
|
240
|
-
def connection
|
241
|
-
@connection ||=
|
242
|
-
self.class.connection_class.connect(:url => config.solr.url,
|
243
|
-
:read_timeout => config.solr.read_timeout,
|
244
|
-
:open_timeout => config.solr.open_timeout)
|
245
|
-
end
|
246
|
-
|
247
|
-
def indexer
|
248
|
-
@indexer ||= Indexer.new(connection)
|
249
|
-
end
|
250
|
-
|
251
|
-
def setup_for_types(types)
|
252
|
-
if types.empty?
|
253
|
-
raise(ArgumentError, "You must specify at least one type to search")
|
254
|
-
end
|
255
|
-
if types.length == 1
|
256
|
-
Setup.for(types.first)
|
257
|
-
else
|
258
|
-
CompositeSetup.for(types)
|
259
|
-
end
|
260
|
-
end
|
261
|
-
end
|
262
|
-
end
|