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,72 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'batch indexing', :type => :indexer do
|
4
|
-
let(:posts) { Array.new(2) { |index| Post.new :title => "Post number #{index}!" } }
|
5
|
-
|
6
|
-
it 'should send all batched adds in a single request' do
|
7
|
-
session.batch do
|
8
|
-
for post in posts
|
9
|
-
session.index(post)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
connection.adds.length.should == 1
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should add all batched adds' do
|
16
|
-
session.batch do
|
17
|
-
for post in posts
|
18
|
-
session.index(post)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
add = connection.adds.last
|
22
|
-
connection.adds.first.map { |add| add.field_by_name(:id).value }.should ==
|
23
|
-
posts.map { |post| "Post #{post.id}" }
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'should not index changes to models that happen after index call' do
|
27
|
-
post = Post.new
|
28
|
-
session.batch do
|
29
|
-
session.index(post)
|
30
|
-
post.title = 'Title'
|
31
|
-
end
|
32
|
-
connection.adds.first.first.field_by_name(:title_ss).should be_nil
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'should batch an add and a delete' do
|
36
|
-
pending 'batching all operations'
|
37
|
-
connection.should_not_receive(:add)
|
38
|
-
connection.should_not_receive(:remove)
|
39
|
-
session.batch do
|
40
|
-
session.index(posts[0])
|
41
|
-
session.remove(posts[1])
|
42
|
-
end
|
43
|
-
connection.adds
|
44
|
-
end
|
45
|
-
|
46
|
-
describe "nesting of batches" do
|
47
|
-
let(:a_nested_batch) do
|
48
|
-
session.batch do
|
49
|
-
session.index posts[0]
|
50
|
-
|
51
|
-
session.batch do
|
52
|
-
session.index posts[1]
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
it "behaves like two sets of batches, does the inner first, then outer" do
|
58
|
-
session.batch { session.index posts[1] }
|
59
|
-
session.batch { session.index posts[0] }
|
60
|
-
|
61
|
-
two_sets_of_batches_adds = connection.adds.dup
|
62
|
-
connection.adds.clear
|
63
|
-
|
64
|
-
a_nested_batch
|
65
|
-
nested_batches_adds = connection.adds
|
66
|
-
|
67
|
-
nested_batches_adds.first.first.field_by_name(:title_ss).value.should eq(
|
68
|
-
two_sets_of_batches_adds.first.first.field_by_name(:title_ss).value
|
69
|
-
)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'indexing dynamic fields' do
|
4
|
-
it 'indexes string data' do
|
5
|
-
session.index(post(:custom_string => { :test => 'string' }))
|
6
|
-
connection.should have_add_with(:"custom_string:test_ss" => 'string')
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'indexes integer data with virtual accessor' do
|
10
|
-
session.index(post(:category_ids => [1, 2]))
|
11
|
-
connection.should have_add_with(:"custom_integer:1_i" => '1', :"custom_integer:2_i" => '1')
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'indexes float data' do
|
15
|
-
session.index(post(:custom_fl => { :test => 1.5 }))
|
16
|
-
connection.should have_add_with(:"custom_float:test_fm" => '1.5')
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'indexes time data' do
|
20
|
-
session.index(post(:custom_time => { :test => Time.parse('2009-05-18 18:05:00 -0400') }))
|
21
|
-
connection.should have_add_with(:"custom_time:test_d" => '2009-05-18T22:05:00Z')
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'indexes boolean data' do
|
25
|
-
session.index(post(:custom_boolean => { :test => false }))
|
26
|
-
connection.should have_add_with(:"custom_boolean:test_b" => 'false')
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'indexes multiple values for a field' do
|
30
|
-
session.index(post(:custom_fl => { :test => [1.0, 2.1, 3.2] }))
|
31
|
-
connection.should have_add_with(:"custom_float:test_fm" => %w(1.0 2.1 3.2))
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'should throw a NoMethodError if dynamic text field defined' do
|
35
|
-
lambda do
|
36
|
-
Sunspot.setup(Post) do
|
37
|
-
dynamic_text :custom_text
|
38
|
-
end
|
39
|
-
end.should raise_error(NoMethodError)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'indexing fixed fields', :type => :indexer do
|
4
|
-
it 'should index id' do
|
5
|
-
session.index post
|
6
|
-
connection.should have_add_with(:id => "Post #{post.id}")
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'should index type' do
|
10
|
-
session.index post
|
11
|
-
connection.should have_add_with(:type => ['Post', 'SuperClass', 'MockRecord'])
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should index class name' do
|
15
|
-
session.index post
|
16
|
-
connection.should have_add_with(:class_name => 'Post')
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'should index the array of objects supplied' do
|
20
|
-
posts = Array.new(2) { Post.new }
|
21
|
-
session.index posts
|
22
|
-
connection.should have_add_with(
|
23
|
-
{ :id => "Post #{posts.first.id}" },
|
24
|
-
{ :id => "Post #{posts.last.id}" }
|
25
|
-
)
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'should index an array containing more than one type of object' do
|
29
|
-
post1, comment, post2 = objects = [Post.new, Namespaced::Comment.new, Post.new]
|
30
|
-
session.index objects
|
31
|
-
connection.should have_add_with(
|
32
|
-
{ :id => "Post #{post1.id}", :type => ['Post', 'SuperClass', 'MockRecord'] },
|
33
|
-
{ :id => "Namespaced::Comment #{comment.id}", :type => ['Namespaced::Comment', 'MockRecord'] },
|
34
|
-
{ :id => "Post #{post2.id}", :type => ['Post', 'SuperClass', 'MockRecord'] }
|
35
|
-
)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'commits immediately after index! called' do
|
39
|
-
connection.should_receive(:add).ordered
|
40
|
-
connection.should_receive(:commit).ordered
|
41
|
-
session.index!(post)
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'raises an ArgumentError if an attempt is made to index an object that has no configuration' do
|
45
|
-
lambda { session.index(Blog.new) }.should raise_error(Sunspot::NoSetupError)
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'raises a NoAdapterError if class without adapter is indexed' do
|
49
|
-
lambda { session.index(User.new) }.should raise_error(Sunspot::NoAdapterError)
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'raises an ArgumentError if a non-word character is included in the field name' do
|
53
|
-
lambda do
|
54
|
-
Sunspot.setup(Post) { string :"bad name" }
|
55
|
-
end.should raise_error(ArgumentError)
|
56
|
-
end
|
57
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'indexing fulltext fields' do
|
4
|
-
it 'indexes text field' do
|
5
|
-
session.index(post(:title => 'A Title'))
|
6
|
-
connection.should have_add_with(:title_text => 'A Title')
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'indexes stored text field' do
|
10
|
-
session.index(post(:body => 'Test body'))
|
11
|
-
connection.should have_add_with(:body_textsv => 'Test body')
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'indexes text field with boost' do
|
15
|
-
session.index(post(:title => 'A Title'))
|
16
|
-
connection.adds.last.first.field_by_name(:title_text).attrs[:boost].should == 2
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'indexes multiple values for a text field' do
|
20
|
-
session.index(post(:body => %w(some title)))
|
21
|
-
connection.should have_add_with(:body_textsv => %w(some title))
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'indexes text via a block accessor' do
|
25
|
-
session.index(post(:title => 'backwards'))
|
26
|
-
connection.should have_add_with(:backwards_title_text => 'sdrawkcab')
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'indexes document level boost using block' do
|
30
|
-
session.index(post(:ratings_average => 4.0))
|
31
|
-
connection.adds.last.first.attrs[:boost].should == 1.25
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'indexes document level boost using attribute' do
|
35
|
-
session.index(Namespaced::Comment.new(:boost => 1.5))
|
36
|
-
connection.adds.last.first.attrs[:boost].should == 1.5
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'indexes document level boost defined statically' do
|
40
|
-
session.index(Photo.new)
|
41
|
-
connection.adds.last.first.attrs[:boost].should == 0.75
|
42
|
-
end
|
43
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'document removal', :type => :indexer do
|
4
|
-
it 'removes an object from the index' do
|
5
|
-
session.remove(post)
|
6
|
-
connection.should have_delete("Post #{post.id}")
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'removes an object by type and id' do
|
10
|
-
session.remove_by_id(Post, 1)
|
11
|
-
connection.should have_delete('Post 1')
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'removes an object by type and id and immediately commits' do
|
15
|
-
connection.should_receive(:delete_by_id).with(['Post 1']).ordered
|
16
|
-
connection.should_receive(:commit).ordered
|
17
|
-
session.remove_by_id!(Post, 1)
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'removes an object from the index and immediately commits' do
|
21
|
-
connection.should_receive(:delete_by_id).ordered
|
22
|
-
connection.should_receive(:commit).ordered
|
23
|
-
session.remove!(post)
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'removes everything from the index' do
|
27
|
-
session.remove_all
|
28
|
-
connection.should have_delete_by_query("*:*")
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'removes everything from the index and immediately commits' do
|
32
|
-
connection.should_receive(:delete_by_query).ordered
|
33
|
-
connection.should_receive(:commit).ordered
|
34
|
-
session.remove_all!
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'removes everything of a given class from the index' do
|
38
|
-
session.remove_all(Post)
|
39
|
-
connection.should have_delete_by_query("type:Post")
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'correctly escapes namespaced classes when removing everything from the index' do
|
43
|
-
connection.should_receive(:delete_by_query).with('type:Namespaced\:\:Comment')
|
44
|
-
session.remove_all(Namespaced::Comment)
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'should remove by query' do
|
48
|
-
session.remove(Post) do
|
49
|
-
with(:title, 'monkeys')
|
50
|
-
end
|
51
|
-
connection.should have_delete_by_query("(type:Post AND title_ss:monkeys)")
|
52
|
-
end
|
53
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.join(File.dirname(__FILE__), '..'))
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'indexer', :type => :indexer do
|
4
|
-
it 'should completely wipe setup if class redefined (reloaded)' do
|
5
|
-
Object::ReloadableClass = Class.new(MockRecord)
|
6
|
-
Sunspot.setup(ReloadableClass) { string(:title) }
|
7
|
-
Object.class_eval { remove_const(:ReloadableClass) }
|
8
|
-
Object::ReloadableClass = Class.new(MockRecord)
|
9
|
-
Sunspot.setup(ReloadableClass) {}
|
10
|
-
lambda do
|
11
|
-
Sunspot.search(ReloadableClass) { with(:title, 'title') }
|
12
|
-
end.should raise_error(Sunspot::UnrecognizedFieldError)
|
13
|
-
end
|
14
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
shared_examples_for "query with advanced manipulation" do
|
4
|
-
describe 'adjust_solr_params' do
|
5
|
-
before :each do
|
6
|
-
search do
|
7
|
-
adjust_solr_params do |params|
|
8
|
-
params[:rows] = 40
|
9
|
-
params[:qt] = 'complicated'
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
it "modifies existing param" do
|
15
|
-
connection.should have_last_search_with(:rows => 40)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "adds new param" do
|
19
|
-
connection.should have_last_search_with(:qt => 'complicated')
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe 'request_handler' do
|
24
|
-
before :each do
|
25
|
-
connection.expected_handler = :myRequestHandler
|
26
|
-
search do
|
27
|
-
request_handler :myRequestHandler
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should use specified request handler' do
|
32
|
-
connection.should have_last_search_with({})
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,201 +0,0 @@
|
|
1
|
-
shared_examples_for "query with connective scope" do
|
2
|
-
it 'creates a disjunction between two restrictions' do
|
3
|
-
search do
|
4
|
-
any_of do
|
5
|
-
with :category_ids, 1
|
6
|
-
with :blog_id, 2
|
7
|
-
end
|
8
|
-
end
|
9
|
-
connection.should have_last_search_including(
|
10
|
-
:fq, '(category_ids_im:1 OR blog_id_i:2)'
|
11
|
-
)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'creates a conjunction inside of a disjunction' do
|
15
|
-
search do
|
16
|
-
any_of do
|
17
|
-
with :blog_id, 2
|
18
|
-
all_of do
|
19
|
-
with :category_ids, 1
|
20
|
-
with(:average_rating).greater_than(3.0)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
connection.should have_last_search_including(
|
25
|
-
:fq,
|
26
|
-
'(blog_id_i:2 OR (category_ids_im:1 AND average_rating_ft:{3\.0 TO *}))'
|
27
|
-
)
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'creates a disjunction with nested conjunction with negated restrictions' do
|
31
|
-
search do
|
32
|
-
any_of do
|
33
|
-
with :category_ids, 1
|
34
|
-
all_of do
|
35
|
-
without(:average_rating).greater_than(3.0)
|
36
|
-
with(:blog_id, 1)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
connection.should have_last_search_including(
|
41
|
-
:fq, '(category_ids_im:1 OR (-average_rating_ft:{3\.0 TO *} AND blog_id_i:1))'
|
42
|
-
)
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'does nothing special if #all_of called from the top level' do
|
46
|
-
search do
|
47
|
-
all_of do
|
48
|
-
with :blog_id, 2
|
49
|
-
with :category_ids, 1
|
50
|
-
end
|
51
|
-
end
|
52
|
-
connection.should have_last_search_including(
|
53
|
-
:fq, 'blog_id_i:2', 'category_ids_im:1'
|
54
|
-
)
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'creates a disjunction with negated restrictions' do
|
58
|
-
search do
|
59
|
-
any_of do
|
60
|
-
with :category_ids, 1
|
61
|
-
without(:average_rating).greater_than(3.0)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
connection.should have_last_search_including(
|
65
|
-
:fq, '-(-category_ids_im:1 AND average_rating_ft:{3\.0 TO *})'
|
66
|
-
)
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'creates a disjunction with a negated restriction and a nested disjunction in a conjunction with a negated restriction' do
|
70
|
-
search do
|
71
|
-
any_of do
|
72
|
-
without(:title, 'Yes')
|
73
|
-
all_of do
|
74
|
-
with(:blog_id, 1)
|
75
|
-
any_of do
|
76
|
-
with(:category_ids, 4)
|
77
|
-
without(:average_rating, 2.0)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
connection.should have_last_search_including(
|
83
|
-
:fq, '-(title_ss:Yes AND -(blog_id_i:1 AND -(-category_ids_im:4 AND average_rating_ft:2\.0)))'
|
84
|
-
)
|
85
|
-
end
|
86
|
-
it 'creates a disjunction with nested conjunction with nested disjunction with negated restriction' do
|
87
|
-
search do
|
88
|
-
any_of do
|
89
|
-
with(:title, 'Yes')
|
90
|
-
all_of do
|
91
|
-
with(:blog_id, 1)
|
92
|
-
any_of do
|
93
|
-
with(:category_ids, 4)
|
94
|
-
without(:average_rating, 2.0)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
connection.should have_last_search_including(
|
100
|
-
:fq, '(title_ss:Yes OR (blog_id_i:1 AND -(-category_ids_im:4 AND average_rating_ft:2\.0)))'
|
101
|
-
)
|
102
|
-
end
|
103
|
-
|
104
|
-
#
|
105
|
-
# This is important because if a disjunction could be nested in another
|
106
|
-
# disjunction, then the inner disjunction could denormalize (and thus
|
107
|
-
# become negated) after the outer disjunction denormalized (checking to
|
108
|
-
# see if the inner one is negated). Since conjunctions never need to
|
109
|
-
# denormalize, if a disjunction can only contain conjunctions or restrictions,
|
110
|
-
# we can guarantee that the negation state of a disjunction's components will
|
111
|
-
# not change when #to_params is called on them.
|
112
|
-
#
|
113
|
-
# Since disjunction is associative, this behavior has no effect on the actual
|
114
|
-
# logical semantics of the disjunction.
|
115
|
-
#
|
116
|
-
it 'creates a single disjunction when disjunctions nested' do
|
117
|
-
search do
|
118
|
-
any_of do
|
119
|
-
with(:title, 'Yes')
|
120
|
-
any_of do
|
121
|
-
with(:blog_id, 1)
|
122
|
-
with(:category_ids, 4)
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
connection.should have_last_search_including(
|
127
|
-
:fq, '(title_ss:Yes OR blog_id_i:1 OR category_ids_im:4)'
|
128
|
-
)
|
129
|
-
end
|
130
|
-
|
131
|
-
it 'creates a disjunction with instance exclusion' do
|
132
|
-
post = Post.new
|
133
|
-
search do
|
134
|
-
any_of do
|
135
|
-
without(post)
|
136
|
-
with(:category_ids, 1)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
connection.should have_last_search_including(
|
140
|
-
:fq, "-(id:(Post\\ #{post.id}) AND -category_ids_im:1)"
|
141
|
-
)
|
142
|
-
end
|
143
|
-
|
144
|
-
it 'creates a disjunction with empty restriction' do
|
145
|
-
search do
|
146
|
-
any_of do
|
147
|
-
with(:average_rating, nil)
|
148
|
-
with(:average_rating).greater_than(3.0)
|
149
|
-
end
|
150
|
-
end
|
151
|
-
connection.should have_last_search_including(
|
152
|
-
:fq, '-(average_rating_ft:[* TO *] AND -average_rating_ft:{3\.0 TO *})'
|
153
|
-
)
|
154
|
-
end
|
155
|
-
|
156
|
-
it 'creates a disjunction with instance inclusion' do
|
157
|
-
post = Post.new
|
158
|
-
search do
|
159
|
-
any_of do
|
160
|
-
with(post)
|
161
|
-
with(:average_rating).greater_than(3.0)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
connection.should have_last_search_including(
|
165
|
-
:fq, "(id:(Post\\ #{post.id}) OR average_rating_ft:{3\\.0 TO *})"
|
166
|
-
)
|
167
|
-
end
|
168
|
-
|
169
|
-
it 'creates a disjunction with some text field components' do
|
170
|
-
search do
|
171
|
-
any_of do
|
172
|
-
text_fields do
|
173
|
-
with(:title).starting_with('test')
|
174
|
-
end
|
175
|
-
with(:blog_id, 1)
|
176
|
-
end
|
177
|
-
end
|
178
|
-
connection.should have_last_search_including(
|
179
|
-
:fq, '(title_text:test* OR blog_id_i:1)'
|
180
|
-
)
|
181
|
-
end
|
182
|
-
|
183
|
-
it 'should ignore empty connectives' do
|
184
|
-
search do
|
185
|
-
any_of {}
|
186
|
-
end
|
187
|
-
connection.should_not have_last_search_including(:fq, '')
|
188
|
-
end
|
189
|
-
|
190
|
-
it 'creates a conjunction of in_radius queries' do
|
191
|
-
search do
|
192
|
-
any_of do
|
193
|
-
with(:coordinates_new).in_radius(23, -46, 100)
|
194
|
-
with(:coordinates_new).in_radius(42, 56, 50)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
connection.should have_last_search_including(
|
198
|
-
:fq, '(_query_:"{!geofilt sfield=coordinates_new_ll pt=23,-46 d=100}" OR _query_:"{!geofilt sfield=coordinates_new_ll pt=42,56 d=50}")'
|
199
|
-
)
|
200
|
-
end
|
201
|
-
end
|