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,69 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'search with highlighting results', :type => :search do
|
4
|
-
before :each do
|
5
|
-
@posts = Array.new(2) { Post.new }
|
6
|
-
stub_results_with_highlighting(
|
7
|
-
@posts[0],
|
8
|
-
{ 'title_text' => ['one @@@hl@@@two@@@endhl@@@ three'] },
|
9
|
-
@posts[1],
|
10
|
-
{ 'title_text' => ['three four @@@hl@@@five@@@endhl@@@'],
|
11
|
-
'body_text' => ['@@@hl@@@five@@@ six seven', '@@@hl@@@eight@@@endhl@@@ nine @@@hl@@@ten@@@endhl@@@'] }
|
12
|
-
)
|
13
|
-
@search = session.search(Post)
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'returns all highlights' do
|
17
|
-
@search.hits.last.should have(3).highlights
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'returns all highlights for a specified field' do
|
21
|
-
@search.hits.last.should have(2).highlights(:body)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'returns first highlight for a specified field' do
|
25
|
-
@search.hits.first.highlight(:title).format.should == 'one <em>two</em> three'
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'returns an empty array if a given field does not have a highlight' do
|
29
|
-
@search.hits.first.highlights(:body).should == []
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'formats hits with <em> by default' do
|
33
|
-
highlight = @search.hits.first.highlights(:title).first.formatted
|
34
|
-
highlight.should == 'one <em>two</em> three'
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'formats hits with provided block' do
|
38
|
-
highlight = @search.hits.first.highlights(:title).first.format do |word|
|
39
|
-
"<i>#{word}</i>"
|
40
|
-
end
|
41
|
-
highlight.should == 'one <i>two</i> three'
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'handles multiple highlighted words' do
|
45
|
-
highlight = @search.hits.last.highlights(:body).last.format do |word|
|
46
|
-
"<b>#{word}</b>"
|
47
|
-
end
|
48
|
-
highlight.should == '<b>eight</b> nine <b>ten</b>'
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def stub_results_with_highlighting(*instances_and_highlights)
|
54
|
-
docs, highlights = [], []
|
55
|
-
instances_and_highlights.each_slice(2) do |doc, highlight|
|
56
|
-
docs << doc
|
57
|
-
highlights << highlight
|
58
|
-
end
|
59
|
-
response = stub_full_results(*docs.map { |doc| { 'instance' => doc }})
|
60
|
-
highlighting = response['highlighting'] = {}
|
61
|
-
highlights.each_with_index do |highlight, i|
|
62
|
-
if highlight
|
63
|
-
instance = docs[i]
|
64
|
-
highlighting["#{instance.class.name} #{instance.id}"] = highlight
|
65
|
-
end
|
66
|
-
end
|
67
|
-
response
|
68
|
-
end
|
69
|
-
end
|
@@ -1,147 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'hits', :type => :search do
|
4
|
-
it 'should return hits without loading instances' do
|
5
|
-
post_1, post_2 = Array.new(2) { Post.new }
|
6
|
-
stub_results(post_1, post_2)
|
7
|
-
%w(load load_all).each do |message|
|
8
|
-
MockAdapter::DataAccessor.should_not_receive(message)
|
9
|
-
end
|
10
|
-
session.search(Post).hits.map do |hit|
|
11
|
-
[hit.class_name, hit.primary_key]
|
12
|
-
end.should == [['Post', post_1.id.to_s], ['Post', post_2.id.to_s]]
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'returns search total as attribute of hits' do
|
16
|
-
stub_results(Post.new, 4)
|
17
|
-
session.search(Post) do
|
18
|
-
paginate(:page => 1)
|
19
|
-
end.hits.total_entries.should == 4
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'returns search total as attribute of verified hits' do
|
23
|
-
stub_results(Post.new, 4)
|
24
|
-
session.search(Post) do
|
25
|
-
paginate(:page => 1)
|
26
|
-
end.hits(:verify => true).total_entries.should == 4
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should return instance from hit' do
|
30
|
-
posts = Array.new(2) { Post.new }
|
31
|
-
stub_results(*posts)
|
32
|
-
session.search(Post).hits.first.instance.should == posts.first
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'should return the instance primary key when you use it as a param' do
|
36
|
-
posts = Array.new(2) { Post.new }
|
37
|
-
stub_results(*posts)
|
38
|
-
session.search(Post).hits.first.to_param.should == posts.first.id.to_s
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'should provide iterator over hits with instances' do
|
42
|
-
posts = Array.new(2) { Post.new }
|
43
|
-
stub_results(*posts)
|
44
|
-
search = session.search(Post)
|
45
|
-
hits, results = [], []
|
46
|
-
|
47
|
-
search.each_hit_with_result do |hit, result|
|
48
|
-
hits << hit
|
49
|
-
results << result
|
50
|
-
end
|
51
|
-
|
52
|
-
hits.should have(2).hits
|
53
|
-
results.should have(2).results
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'should provide an Enumerator over hits with instances' do
|
57
|
-
posts = Array.new(2) { Post.new }
|
58
|
-
stub_results(*posts)
|
59
|
-
search = session.search(Post)
|
60
|
-
hits, results = [], []
|
61
|
-
search.each_hit_with_result.with_index do |(hit, result), index|
|
62
|
-
hit.should be_kind_of(Sunspot::Search::Hit)
|
63
|
-
result.should be_kind_of(Post)
|
64
|
-
index.should be_kind_of(Integer)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'should hydrate all hits when an instance is requested from a hit' do
|
69
|
-
posts = Array.new(2) { Post.new }
|
70
|
-
stub_results(*posts)
|
71
|
-
search = session.search(Post)
|
72
|
-
search.hits.first.instance
|
73
|
-
%w(load load_all).each do |message|
|
74
|
-
MockAdapter::DataAccessor.should_not_receive(message)
|
75
|
-
end
|
76
|
-
search.hits.last.instance.should == posts.last
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'should return only hits whose referenced object exists in the data store if :verify option passed' do
|
80
|
-
posts = Array.new(2) { Post.new }
|
81
|
-
posts.last.destroy
|
82
|
-
stub_results(*posts)
|
83
|
-
search = session.search(Post)
|
84
|
-
search.hits(:verify => true).map { |hit| hit.instance }.should == posts[0..0]
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'should return verified and unverified hits from the same search' do
|
88
|
-
posts = Array.new(2) { Post.new }
|
89
|
-
posts.last.destroy
|
90
|
-
stub_results(*posts)
|
91
|
-
search = session.search(Post)
|
92
|
-
search.hits(:verify => true).map { |hit| hit.instance }.should == posts[0..0]
|
93
|
-
search.hits.map { |hit| hit.instance }.should == [posts.first, nil]
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'should attach score to hits' do
|
97
|
-
stub_full_results('instance' => Post.new, 'score' => 1.23)
|
98
|
-
session.search(Post).hits.first.score.should == 1.23
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'should return stored field values in hits' do
|
102
|
-
stub_full_results('instance' => Post.new, 'title_ss' => 'Title')
|
103
|
-
session.search(Post).hits.first.stored(:title).should == 'Title'
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'should return stored field values for searches against multiple types' do
|
107
|
-
stub_full_results('instance' => Post.new, 'title_ss' => 'Title')
|
108
|
-
session.search(Post, Namespaced::Comment).hits.first.stored(:title).should == 'Title'
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'should return stored field values for searches against base type when subtype matches' do
|
112
|
-
class SubclassedPost < Post; end;
|
113
|
-
stub_full_results('instance' => SubclassedPost.new, 'title_ss' => 'Title')
|
114
|
-
session.search(Post).hits.first.stored(:title).should == 'Title'
|
115
|
-
end
|
116
|
-
|
117
|
-
it 'should return stored text fields' do
|
118
|
-
stub_full_results('instance' => Post.new, 'body_textsv' => 'Body')
|
119
|
-
session.search(Post, Namespaced::Comment).hits.first.stored(:body).should == 'Body'
|
120
|
-
end
|
121
|
-
|
122
|
-
it 'should return stored boolean fields' do
|
123
|
-
stub_full_results('instance' => Post.new, 'featured_bs' => true)
|
124
|
-
session.search(Post, Namespaced::Comment).hits.first.stored(:featured).should be_true
|
125
|
-
end
|
126
|
-
|
127
|
-
it 'should return stored boolean fields that evaluate to false' do
|
128
|
-
stub_full_results('instance' => Post.new, 'featured_bs' => false)
|
129
|
-
session.search(Post, Namespaced::Comment).hits.first.stored(:featured).should == false
|
130
|
-
end
|
131
|
-
|
132
|
-
it 'should return stored dynamic fields' do
|
133
|
-
stub_full_results('instance' => Post.new, 'custom_string:test_ss' => 'Custom')
|
134
|
-
session.search(Post, Namespaced::Comment).hits.first.stored(:custom_string, :test).should == 'Custom'
|
135
|
-
end
|
136
|
-
|
137
|
-
it 'should typecast stored field values in hits' do
|
138
|
-
time = Time.utc(2008, 7, 8, 2, 45)
|
139
|
-
stub_full_results('instance' => Post.new, 'last_indexed_at_ds' => time.xmlschema)
|
140
|
-
session.search(Post).hits.first.stored(:last_indexed_at).should == time
|
141
|
-
end
|
142
|
-
|
143
|
-
it 'should return stored values for multi-valued fields' do
|
144
|
-
stub_full_results('instance' => User.new, 'role_ids_ims' => %w(1 4 5))
|
145
|
-
session.search(User).hits.first.stored(:role_ids).should == [1, 4, 5]
|
146
|
-
end
|
147
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe "PaginatedCollection" do
|
4
|
-
subject { Sunspot::Search::PaginatedCollection.new [], 1, 10, 20 }
|
5
|
-
|
6
|
-
it { subject.should be_an(Array) }
|
7
|
-
|
8
|
-
context "behaves like a WillPaginate::Collection" do
|
9
|
-
it { subject.total_entries.should eql(20) }
|
10
|
-
it { subject.total_pages.should eql(2) }
|
11
|
-
it { subject.current_page.should eql(1) }
|
12
|
-
it { subject.per_page.should eql(10) }
|
13
|
-
it { subject.previous_page.should be_nil }
|
14
|
-
it { subject.next_page.should eql(2) }
|
15
|
-
it { subject.out_of_bounds?.should_not be_true }
|
16
|
-
it { subject.offset.should eql(0) }
|
17
|
-
|
18
|
-
it 'should allow setting total_count' do
|
19
|
-
subject.total_count = 1
|
20
|
-
subject.total_count.should eql(1)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should allow setting total_entries' do
|
24
|
-
subject.total_entries = 1
|
25
|
-
subject.total_entries.should eql(1)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context "behaves like Kaminari" do
|
30
|
-
it { subject.total_count.should eql(20) }
|
31
|
-
it { subject.num_pages.should eql(2) }
|
32
|
-
it { subject.limit_value.should eql(10) }
|
33
|
-
it { subject.first_page?.should be_true }
|
34
|
-
it { subject.last_page?.should_not be_true }
|
35
|
-
end
|
36
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'search results', :type => :search do
|
4
|
-
it 'loads single result' do
|
5
|
-
post = Post.new
|
6
|
-
stub_results(post)
|
7
|
-
session.search(Post).results.should == [post]
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'loads multiple results in order' do
|
11
|
-
post_1, post_2 = Post.new, Post.new
|
12
|
-
stub_results(post_1, post_2)
|
13
|
-
session.search(Post).results.should == [post_1, post_2]
|
14
|
-
stub_results(post_2, post_1)
|
15
|
-
session.search(Post).results.should == [post_2, post_1]
|
16
|
-
end
|
17
|
-
|
18
|
-
# This is a reduction of a crazy bug I found in production where some hits
|
19
|
-
# were inexplicably not being populated.
|
20
|
-
it 'properly loads results of multiple classes that have the same primary key' do
|
21
|
-
Post.reset!
|
22
|
-
Namespaced::Comment.reset!
|
23
|
-
results = [Post.new, Namespaced::Comment.new]
|
24
|
-
stub_results(*results)
|
25
|
-
session.search(Post, Namespaced::Comment).results.should == results
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'gracefully returns empty results when response is nil' do
|
29
|
-
stub_nil_results
|
30
|
-
session.search(Post).results.should == []
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'returns search total as attribute of results' do
|
34
|
-
stub_results(Post.new, 4)
|
35
|
-
session.search(Post) do
|
36
|
-
paginate(:page => 1)
|
37
|
-
end.results.total_entries.should == 4
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'returns total' do
|
41
|
-
stub_results(Post.new, Post.new, 4)
|
42
|
-
session.search(Post) { paginate(:page => 1) }.total.should == 4
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'returns query time' do
|
46
|
-
stub_nil_results
|
47
|
-
connection.response['responseHeader'] = { 'QTime' => 42 }
|
48
|
-
session.search(Post) { paginate(:page => 1) }.query_time.should == 42
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'returns total for nil search' do
|
52
|
-
stub_nil_results
|
53
|
-
session.search(Post).total.should == 0
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'returns available results if some results are not available from data store' do
|
57
|
-
posts = [Post.new, Post.new]
|
58
|
-
posts.last.destroy
|
59
|
-
stub_results(*posts)
|
60
|
-
session.search(Post).results.should == posts[0..0]
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'does not attempt to query the data store more than once when results are unavailable' do
|
64
|
-
posts = [Post.new, Post.new]
|
65
|
-
posts.each { |post| post.destroy }
|
66
|
-
stub_results(*posts)
|
67
|
-
search = session.search(Post) do
|
68
|
-
data_accessor_for(Post).should_receive(:load_all).once.and_return([])
|
69
|
-
end
|
70
|
-
search.results.should == []
|
71
|
-
end
|
72
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe Sunspot::Search do
|
4
|
-
it 'should allow access to the data accessor' do
|
5
|
-
stub_results(posts = Post.new)
|
6
|
-
search = session.search Post do
|
7
|
-
data_accessor_for(Post).custom_title = 'custom title'
|
8
|
-
end
|
9
|
-
search.results.first.title.should == 'custom title'
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'should re-execute search' do
|
13
|
-
post_1, post_2 = Post.new, Post.new
|
14
|
-
|
15
|
-
stub_results(post_1)
|
16
|
-
search = session.search Post
|
17
|
-
search.results.should == [post_1]
|
18
|
-
|
19
|
-
stub_results(post_2)
|
20
|
-
search.execute!
|
21
|
-
search.results.should == [post_2]
|
22
|
-
end
|
23
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.join(File.dirname(__FILE__), '..'))
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe Sunspot::SessionProxy::ClassShardingSessionProxy do
|
4
|
-
before do
|
5
|
-
@proxy = MockClassShardingSessionProxy.new(session)
|
6
|
-
end
|
7
|
-
|
8
|
-
[:index, :index!, :remove, :remove!].each do |method|
|
9
|
-
it "should delegate #{method} to appropriate shard" do
|
10
|
-
post = Post.new
|
11
|
-
photo = Photo.new
|
12
|
-
@proxy.post_session.should_receive(method).with([post])
|
13
|
-
@proxy.photo_session.should_receive(method).with([photo])
|
14
|
-
@proxy.send(method, post)
|
15
|
-
@proxy.send(method, photo)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
[:remove_by_id, :remove_by_id!].each do |method|
|
20
|
-
it "should delegate #{method} to appropriate shard" do
|
21
|
-
@proxy.post_session.should_receive(method).with(Post, 1)
|
22
|
-
@proxy.photo_session.should_receive(method).with(Photo, 1)
|
23
|
-
@proxy.send(method, Post, 1)
|
24
|
-
@proxy.send(method, Photo, 1)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
[:remove_all, :remove_all!].each do |method|
|
29
|
-
it "should delegate #{method} with argument to appropriate shard" do
|
30
|
-
@proxy.post_session.should_receive(method).with(Post)
|
31
|
-
@proxy.photo_session.should_receive(method).with(Photo)
|
32
|
-
@proxy.send(method, Post)
|
33
|
-
@proxy.send(method, Photo)
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should delegate #{method} without argument to all shards" do
|
37
|
-
@proxy.post_session.should_receive(method)
|
38
|
-
@proxy.photo_session.should_receive(method)
|
39
|
-
@proxy.send(method)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
[:commit, :commit_if_dirty, :commit_if_delete_dirty, :optimize].each do |method|
|
44
|
-
it "should delegate #{method} to all sessions" do
|
45
|
-
[@proxy.post_session, @proxy.photo_session].each do |session|
|
46
|
-
session.should_receive(method)
|
47
|
-
end
|
48
|
-
@proxy.send(method)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should not support the :batch method" do
|
53
|
-
lambda { @proxy.batch }.should raise_error(Sunspot::SessionProxy::NotSupportedError)
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should delegate new_search to search session, adding in shards parameter" do
|
57
|
-
search = @proxy.new_search(Post)
|
58
|
-
search.query[:shards].should ==
|
59
|
-
'http://photos.solr.local/solr,http://posts.solr.local/solr'
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should delegate search to search session, adding in shards parameter" do
|
63
|
-
@proxy.search(Post)
|
64
|
-
connection.should have_last_search_with(
|
65
|
-
:shards => 'http://photos.solr.local/solr,http://posts.solr.local/solr'
|
66
|
-
)
|
67
|
-
end
|
68
|
-
|
69
|
-
[:dirty, :delete_dirty].each do |method|
|
70
|
-
it "should be dirty if any of the sessions are dirty" do
|
71
|
-
@proxy.post_session.stub!(:"#{method}?").and_return(true)
|
72
|
-
@proxy.should send("be_#{method}")
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should not be dirty if none of the sessions are dirty" do
|
76
|
-
@proxy.should_not send("be_#{method}")
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should raise a NotSupportedError when :config is called" do
|
81
|
-
lambda { @proxy.config }.should raise_error(Sunspot::SessionProxy::NotSupportedError)
|
82
|
-
end
|
83
|
-
|
84
|
-
it_should_behave_like 'session proxy'
|
85
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe Sunspot::SessionProxy::ShardingSessionProxy do
|
4
|
-
before do
|
5
|
-
search_session = Sunspot::Session.new
|
6
|
-
@sessions = Array.new(2) { Sunspot::Session.new }
|
7
|
-
@proxy = Sunspot::SessionProxy::IdShardingSessionProxy.new(search_session, @sessions)
|
8
|
-
end
|
9
|
-
|
10
|
-
[:index, :index!, :remove, :remove!].each do |method|
|
11
|
-
it "should delegate #{method} to appropriate shard" do
|
12
|
-
posts = [Post.new(:id => 2), Post.new(:id => 1)]
|
13
|
-
@proxy.sessions[0].should_receive(method).with([posts[0]])
|
14
|
-
@proxy.sessions[1].should_receive(method).with([posts[1]])
|
15
|
-
@proxy.send(method, posts[0])
|
16
|
-
@proxy.send(method, posts[1])
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
[:remove_by_id, :remove_by_id!].each do |method|
|
21
|
-
it "should delegate #{method} to appropriate session" do
|
22
|
-
@proxy.sessions[0].should_receive(method).with(Post, 2)
|
23
|
-
@proxy.sessions[1].should_receive(method).with(Post, 1)
|
24
|
-
@proxy.send(method, Post, 1)
|
25
|
-
@proxy.send(method, Post, 2)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
it_should_behave_like 'session proxy'
|
30
|
-
end
|