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,64 +0,0 @@
|
|
1
|
-
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'local search' do
|
4
|
-
ORIGIN = [40.7246062, -73.9969018]
|
5
|
-
LOCATIONS = [
|
6
|
-
[40.7246062, -73.9969018], # dr5rsjtn50yf
|
7
|
-
[40.724606, -73.996902], # dr5rsjtn50y9
|
8
|
-
[40.724606, -73.996901], # dr5rsjtn50z3
|
9
|
-
[40.72461, -73.996906] # dr5rsjtn51ec
|
10
|
-
].map { |lat, lng| Sunspot::Util::Coordinates.new(lat, lng) }
|
11
|
-
|
12
|
-
before :each do
|
13
|
-
Sunspot.remove_all
|
14
|
-
end
|
15
|
-
|
16
|
-
describe 'without fulltext' do
|
17
|
-
before :each do
|
18
|
-
@posts = LOCATIONS.map do |location|
|
19
|
-
Post.new(:coordinates => location)
|
20
|
-
end
|
21
|
-
Sunspot.index!(@posts)
|
22
|
-
@search = Sunspot.search(Post) do
|
23
|
-
with(:coordinates).near(ORIGIN[0], ORIGIN[1], :precision_factor => 4.0)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should return results in geo order' do
|
28
|
-
@search.results.should == @posts
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should asssign higher score to closer locations' do
|
32
|
-
hits = @search.hits
|
33
|
-
hits[1..-1].each_with_index do |hit, i|
|
34
|
-
hit.score.should < hits[i].score
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe 'with fulltext' do
|
40
|
-
before :each do
|
41
|
-
@posts = [
|
42
|
-
Post.new(:title => 'pizza', :coordinates => LOCATIONS[0]),
|
43
|
-
Post.new(:title => 'pizza', :coordinates => LOCATIONS[1]),
|
44
|
-
Post.new(:title => 'pasta calzone pizza antipasti', :coordinates => LOCATIONS[1])
|
45
|
-
]
|
46
|
-
Sunspot.index!(@posts)
|
47
|
-
@search = Sunspot.search(Post) do
|
48
|
-
keywords 'pizza'
|
49
|
-
with(:coordinates).near(ORIGIN[0], ORIGIN[1])
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'should take both fulltext and distance into account in ordering' do
|
54
|
-
@search.results.should == @posts
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'should take both fulltext and distance into account in scoring' do
|
58
|
-
hits = @search.hits
|
59
|
-
hits[1..-1].each_with_index do |hit, i|
|
60
|
-
hit.score.should < hits[i].score
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'more_like_this' do
|
4
|
-
before :all do
|
5
|
-
Sunspot.remove_all
|
6
|
-
@posts = [
|
7
|
-
Post.new(:body => "one two three", :tags => %w(ruby sunspot rsolr)),
|
8
|
-
Post.new(:body => "four five six", :tags => %w(ruby solr lucene)),
|
9
|
-
Post.new(:body => "two three four", :tags => %w(python sqlalchemy)),
|
10
|
-
Post.new(:body => "three four five", :tags => %w(ruby sunspot mat)),
|
11
|
-
Post.new(:body => "six seven eight", :tags => %w(bogus airplane))
|
12
|
-
]
|
13
|
-
Sunspot.index!(@posts)
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'should return results for all MLT fields' do
|
17
|
-
Sunspot.more_like_this(@posts.first).results.to_set.should == @posts[1..3].to_set
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should return results for specified text field' do
|
21
|
-
Sunspot.more_like_this(@posts.first) do
|
22
|
-
fields :body
|
23
|
-
end.results.to_set.should == @posts[2..3].to_set
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'should return empty result set if no results' do
|
27
|
-
Sunspot.more_like_this(@posts.last) do
|
28
|
-
with(:title, 'bogus')
|
29
|
-
end.results.should == []
|
30
|
-
end
|
31
|
-
|
32
|
-
describe 'when non-indexed object searched' do
|
33
|
-
before(:each) { @mlt = Sunspot.more_like_this(Post.new) }
|
34
|
-
|
35
|
-
it 'should return empty result set' do
|
36
|
-
@mlt.results.should == []
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'shoult return a total of 0' do
|
40
|
-
@mlt.total.should == 0
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,386 +0,0 @@
|
|
1
|
-
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe 'scoped_search' do
|
4
|
-
def self.test_field_type(name, attribute, field, *values)
|
5
|
-
clazz =
|
6
|
-
if values.first.is_a?(Class)
|
7
|
-
values.shift
|
8
|
-
else
|
9
|
-
Post
|
10
|
-
end
|
11
|
-
raise(ArgumentError, 'Please supply five values') unless values.length == 5
|
12
|
-
|
13
|
-
context "with field of type #{name}" do
|
14
|
-
before :all do
|
15
|
-
Sunspot.remove_all
|
16
|
-
@objects = values.map do |value|
|
17
|
-
object = clazz.new(attribute => value)
|
18
|
-
Sunspot.index(object)
|
19
|
-
object
|
20
|
-
end
|
21
|
-
Sunspot.commit
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'should filter by exact match' do
|
25
|
-
Sunspot.search(clazz) { with(field, values[2]) }.results.should == [@objects[2]]
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'should reject by inexact match' do
|
29
|
-
results = Sunspot.search(clazz) { without(field, values[2]) }.results
|
30
|
-
[0, 1, 3, 4].each { |i| results.should include(@objects[i]) }
|
31
|
-
results.should_not include(@objects[2])
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'should filter by less than' do
|
35
|
-
results = Sunspot.search(clazz) { with(field).less_than values[2] }.results
|
36
|
-
(0..1).each { |i| results.should include(@objects[i]) }
|
37
|
-
(2..4).each { |i| results.should_not include(@objects[i]) }
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'should reject by less than' do
|
41
|
-
results = Sunspot.search(clazz) { without(field).less_than values[2] }.results
|
42
|
-
(0..1).each { |i| results.should_not include(@objects[i]) }
|
43
|
-
(2..4).each { |i| results.should include(@objects[i]) }
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'should filter by less than or equal to' do
|
47
|
-
results = Sunspot.search(clazz) { with(field).less_than_or_equal_to values[2] }.results
|
48
|
-
(0..2).each { |i| results.should include(@objects[i]) }
|
49
|
-
(3..4).each { |i| results.should_not include(@objects[i]) }
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'should reject by less than or equal to' do
|
53
|
-
results = Sunspot.search(clazz) { without(field).less_than_or_equal_to values[2] }.results
|
54
|
-
(0..2).each { |i| results.should_not include(@objects[i]) }
|
55
|
-
(3..4).each { |i| results.should include(@objects[i]) }
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'should filter by greater than' do
|
59
|
-
results = Sunspot.search(clazz) { with(field).greater_than values[2] }.results
|
60
|
-
(3..4).each { |i| results.should include(@objects[i]) }
|
61
|
-
(0..2).each { |i| results.should_not include(@objects[i]) }
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'should reject by greater than' do
|
65
|
-
results = Sunspot.search(clazz) { without(field).greater_than values[2] }.results
|
66
|
-
(3..4).each { |i| results.should_not include(@objects[i]) }
|
67
|
-
(0..2).each { |i| results.should include(@objects[i]) }
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'should filter by greater than or equal to' do
|
71
|
-
results = Sunspot.search(clazz) { with(field).greater_than_or_equal_to values[2] }.results
|
72
|
-
(2..4).each { |i| results.should include(@objects[i]) }
|
73
|
-
(0..1).each { |i| results.should_not include(@objects[i]) }
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'should reject by greater than' do
|
77
|
-
results = Sunspot.search(clazz) { without(field).greater_than_or_equal_to values[2] }.results
|
78
|
-
(2..4).each { |i| results.should_not include(@objects[i]) }
|
79
|
-
(0..1).each { |i| results.should include(@objects[i]) }
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'should filter by between' do
|
83
|
-
results = Sunspot.search(clazz) { with(field).between(values[1]..values[3]) }.results
|
84
|
-
(1..3).each { |i| results.should include(@objects[i]) }
|
85
|
-
[0, 4].each { |i| results.should_not include(@objects[i]) }
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'should reject by between' do
|
89
|
-
results = Sunspot.search(clazz) { without(field).between(values[1]..values[3]) }.results
|
90
|
-
(1..3).each { |i| results.should_not include(@objects[i]) }
|
91
|
-
[0, 4].each { |i| results.should include(@objects[i]) }
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'should filter by any of' do
|
95
|
-
results = Sunspot.search(clazz) { with(field).any_of(values.values_at(1, 3)) }.results
|
96
|
-
[1, 3].each { |i| results.should include(@objects[i]) }
|
97
|
-
[0, 2, 4].each { |i| results.should_not include(@objects[i]) }
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'should reject by any of' do
|
101
|
-
results = Sunspot.search(clazz) { without(field).any_of(values.values_at(1, 3)) }.results
|
102
|
-
[1, 3].each { |i| results.should_not include(@objects[i]) }
|
103
|
-
[0, 2, 4].each { |i| results.should include(@objects[i]) }
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'should order by field ascending' do
|
107
|
-
results = Sunspot.search(clazz) { order_by field, :asc }.results
|
108
|
-
results.should == @objects
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'should order by field descending' do
|
112
|
-
results = Sunspot.search(clazz) { order_by field, :desc }.results
|
113
|
-
results.should == @objects.reverse
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
test_field_type 'String', :title, :title, 'apple pie', 'banana split', 'cherry tart', 'date pastry', 'eggplant a la mode'
|
119
|
-
test_field_type 'Integer', :blog_id, :blog_id, -2, 0, 3, 12, 20
|
120
|
-
test_field_type 'Long', :hash, :hash, Namespaced::Comment, 2**29, 2**30, 2**31, 2**32, 2**33
|
121
|
-
test_field_type 'Float', :ratings_average, :average_rating, -2.5, 0.0, 3.2, 3.5, 16.0
|
122
|
-
test_field_type 'Double', :average_rating, :average_rating, Namespaced::Comment, -2.5, 0.0, 3.2, 3.5, 16.0
|
123
|
-
test_field_type 'Time', :published_at, :published_at, *(['1970-01-01 00:00:00 UTC', '1983-07-08 04:00:00 UTC', '1983-07-08 02:00:00 -0500',
|
124
|
-
'2005-11-05 10:00:00 UTC', Time.now.to_s].map { |t| Time.parse(t) })
|
125
|
-
test_field_type 'Trie Integer', :size, :size, Photo, -2, 0, 3, 12, 20
|
126
|
-
test_field_type 'Trie Float', :average_rating, :average_rating, Photo, -2.5, 0.0, 3.2, 3.5, 16.0
|
127
|
-
test_field_type 'Trie Time', :created_at, :created_at, Photo, *(['1970-01-01 00:00:00 UTC', '1983-07-08 04:00:00 UTC', '1983-07-08 02:00:00 -0500',
|
128
|
-
'2005-11-05 10:00:00 UTC', Time.now.to_s].map { |t| Time.parse(t) })
|
129
|
-
|
130
|
-
describe 'Boolean field type' do
|
131
|
-
before :all do
|
132
|
-
Sunspot.remove_all
|
133
|
-
@posts = [Post.new(:featured => true), Post.new(:featured => false), Post.new]
|
134
|
-
Sunspot.index!(@posts)
|
135
|
-
end
|
136
|
-
|
137
|
-
it 'should filter by exact match for true' do
|
138
|
-
Sunspot.search(Post) { with(:featured, true) }.results.should == [@posts[0]]
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'should filter for exact match for false' do
|
142
|
-
Sunspot.search(Post) { with(:featured, false) }.results.should == [@posts[1]]
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
describe 'Legacy (static) fields' do
|
147
|
-
it "allows for using symbols in defining static field names" do
|
148
|
-
Sunspot.remove_all
|
149
|
-
Sunspot.index!(legacy = Post.new(:title => "foo"))
|
150
|
-
Sunspot.search(Post) { with(:legacy, "legacy foo") }.results.should == [legacy]
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
describe 'reserved words' do
|
155
|
-
%w(AND OR NOT TO).each do |word|
|
156
|
-
it "should successfully search for #{word.inspect}" do
|
157
|
-
Sunspot.index!(post = Post.new(:title => word))
|
158
|
-
Sunspot.search(Post) { with(:title, word) }.results.should == [post]
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
describe 'passing nil value to equal' do
|
164
|
-
before :all do
|
165
|
-
Sunspot.remove_all
|
166
|
-
@posts = [Post.new(:title => 'apple'), Post.new]
|
167
|
-
Sunspot.index!(@posts)
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'should filter results without value for field' do
|
171
|
-
Sunspot.search(Post) { with(:title, nil) }.results.should == [@posts[1]]
|
172
|
-
end
|
173
|
-
|
174
|
-
it 'should exclude results without value for field' do
|
175
|
-
Sunspot.search(Post) { without(:title, nil) }.results.should == [@posts[0]]
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
describe 'prefix searching' do
|
180
|
-
before :each do
|
181
|
-
Sunspot.remove_all
|
182
|
-
@posts = ['test', 'test post', 'some test', 'bogus'].map do |title|
|
183
|
-
Post.new(:title => title)
|
184
|
-
end
|
185
|
-
Sunspot.index!(@posts)
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'should return results whose prefix matches' do
|
189
|
-
Sunspot.search(Post) { with(:title).starting_with('test') }.results.should == @posts[0..1]
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
describe 'inclusion by identity' do
|
194
|
-
before do
|
195
|
-
@posts = (1..5).map do |i|
|
196
|
-
post = Post.new
|
197
|
-
Sunspot.index(post)
|
198
|
-
post
|
199
|
-
end
|
200
|
-
Sunspot.commit
|
201
|
-
end
|
202
|
-
|
203
|
-
it 'should only return included object' do
|
204
|
-
included_post = @posts.shift
|
205
|
-
Sunspot.search(Post) { with(included_post) }.results.should include(included_post)
|
206
|
-
end
|
207
|
-
|
208
|
-
it 'should not return objects not included' do
|
209
|
-
included_post = @posts.shift
|
210
|
-
for excluded_post in @posts
|
211
|
-
Sunspot.search(Post) { with(included_post) }.results.should_not include(excluded_post)
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
it 'should return included objects' do
|
216
|
-
included_posts = [@posts.shift, @posts.shift]
|
217
|
-
for included_post in included_posts
|
218
|
-
Sunspot.search(Post) { with(included_posts) }.results.should include(included_post)
|
219
|
-
end
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
describe 'exclusion by identity' do
|
224
|
-
before do
|
225
|
-
@posts = (1..5).map do |i|
|
226
|
-
post = Post.new
|
227
|
-
Sunspot.index(post)
|
228
|
-
post
|
229
|
-
end
|
230
|
-
Sunspot.commit
|
231
|
-
end
|
232
|
-
|
233
|
-
it 'should not return excluded object' do
|
234
|
-
excluded_post = @posts.shift
|
235
|
-
Sunspot.search(Post) { without(excluded_post) }.results.should_not include(excluded_post)
|
236
|
-
end
|
237
|
-
|
238
|
-
it 'should return objects not excluded' do
|
239
|
-
excluded_post = @posts.shift
|
240
|
-
for included_post in @posts
|
241
|
-
Sunspot.search(Post) { without(excluded_post) }.results.should include(included_post)
|
242
|
-
end
|
243
|
-
end
|
244
|
-
|
245
|
-
it 'should not return excluded objects' do
|
246
|
-
excluded_posts = [@posts.shift, @posts.shift]
|
247
|
-
for excluded_post in excluded_posts
|
248
|
-
Sunspot.search(Post) { without(excluded_posts) }.results.should_not include(excluded_post)
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
describe 'connectives' do
|
254
|
-
before :each do
|
255
|
-
Sunspot.remove_all
|
256
|
-
end
|
257
|
-
|
258
|
-
it 'should return results that match any restriction in a disjunction' do
|
259
|
-
posts = (1..3).map { |i| Post.new(:blog_id => i)}
|
260
|
-
Sunspot.index!(posts)
|
261
|
-
Sunspot.search(Post) do
|
262
|
-
any_of do
|
263
|
-
with(:blog_id, 1)
|
264
|
-
with(:blog_id, 2)
|
265
|
-
end
|
266
|
-
end.results.should == posts[0..1]
|
267
|
-
end
|
268
|
-
|
269
|
-
it 'should return results that match a nested conjunction in a disjunction' do
|
270
|
-
posts = [
|
271
|
-
Post.new(:title => 'No', :blog_id => 1),
|
272
|
-
Post.new(:title => 'Yes', :blog_id => 2),
|
273
|
-
Post.new(:title => 'Yes', :blog_id => 3),
|
274
|
-
Post.new(:title => 'No', :blog_id => 2)
|
275
|
-
]
|
276
|
-
Sunspot.index!(posts)
|
277
|
-
Sunspot.search(Post) do
|
278
|
-
any_of do
|
279
|
-
with(:blog_id, 1)
|
280
|
-
all_of do
|
281
|
-
with(:blog_id, 2)
|
282
|
-
with(:title, 'Yes')
|
283
|
-
end
|
284
|
-
end
|
285
|
-
end.results.should == posts[0..1]
|
286
|
-
end
|
287
|
-
|
288
|
-
it 'should return results that match a conjunction with a negated restriction' do
|
289
|
-
posts = [
|
290
|
-
Post.new(:title => 'No', :blog_id => 1),
|
291
|
-
Post.new(:title => 'Yes', :blog_id => 2),
|
292
|
-
Post.new(:title => 'No', :blog_id => 2)
|
293
|
-
]
|
294
|
-
Sunspot.index!(posts)
|
295
|
-
search = Sunspot.search(Post) do
|
296
|
-
any_of do
|
297
|
-
with(:blog_id, 1)
|
298
|
-
without(:title, 'No')
|
299
|
-
end
|
300
|
-
end
|
301
|
-
search.results.should == posts[0..1]
|
302
|
-
end
|
303
|
-
|
304
|
-
it 'should return results that match a conjunction with a disjunction with a conjunction with a negated restriction' do
|
305
|
-
posts = [
|
306
|
-
Post.new(:title => 'Yes', :ratings_average => 2.0),
|
307
|
-
Post.new(:blog_id => 1, :category_ids => [4], :ratings_average => 2.0),
|
308
|
-
Post.new(:blog_id => 1),
|
309
|
-
Post.new(:blog_id => 2),
|
310
|
-
Post.new(:blog_id => 1, :ratings_average => 2.0)
|
311
|
-
]
|
312
|
-
Sunspot.index!(posts)
|
313
|
-
search = Sunspot.search(Post) do
|
314
|
-
any_of do
|
315
|
-
with(:title, 'Yes')
|
316
|
-
all_of do
|
317
|
-
with(:blog_id, 1)
|
318
|
-
any_of do
|
319
|
-
with(:category_ids, 4)
|
320
|
-
without(:average_rating, 2.0)
|
321
|
-
end
|
322
|
-
end
|
323
|
-
end
|
324
|
-
end
|
325
|
-
search.results.should == posts[0..2]
|
326
|
-
end
|
327
|
-
|
328
|
-
it 'should return results that match a disjunction with a negated restriction and a nested disjunction in a conjunction with a negated restriction' do
|
329
|
-
posts = [
|
330
|
-
Post.new,
|
331
|
-
Post.new(:title => 'Yes', :blog_id => 1, :category_ids => [4], :ratings_average => 2.0),
|
332
|
-
Post.new(:title => 'Yes', :blog_id => 1),
|
333
|
-
Post.new(:title => 'Yes'),
|
334
|
-
Post.new(:title => 'Yes', :category_ids => [4], :ratings_average => 2.0),
|
335
|
-
Post.new(:title => 'Yes', :blog_id => 1, :ratings_average => 2.0)
|
336
|
-
]
|
337
|
-
Sunspot.index!(posts)
|
338
|
-
search = Sunspot.search(Post) do
|
339
|
-
any_of do
|
340
|
-
without(:title, 'Yes')
|
341
|
-
all_of do
|
342
|
-
with(:blog_id, 1)
|
343
|
-
any_of do
|
344
|
-
with(:category_ids, 4)
|
345
|
-
without(:average_rating, 2.0)
|
346
|
-
end
|
347
|
-
end
|
348
|
-
end
|
349
|
-
end
|
350
|
-
search.results.should == posts[0..2]
|
351
|
-
end
|
352
|
-
end
|
353
|
-
|
354
|
-
describe 'multiple column ordering' do
|
355
|
-
before do
|
356
|
-
Sunspot.remove_all
|
357
|
-
@posts = [
|
358
|
-
Post.new(:ratings_average => 2, :title => 'banana'),
|
359
|
-
Post.new(:ratings_average => 2, :title => 'eggplant'),
|
360
|
-
Post.new(:ratings_average => 1, :title => 'apple')
|
361
|
-
].each { |post| Sunspot.index(post) }
|
362
|
-
Sunspot.commit
|
363
|
-
end
|
364
|
-
|
365
|
-
it 'should order with precedence given' do
|
366
|
-
search = Sunspot.search(Post) do
|
367
|
-
order_by :average_rating, :desc
|
368
|
-
order_by :sort_title, :asc
|
369
|
-
end
|
370
|
-
search.results.should == @posts
|
371
|
-
end
|
372
|
-
end
|
373
|
-
|
374
|
-
describe 'ordering by random' do
|
375
|
-
it 'should order randomly (run this test again if it fails)' do
|
376
|
-
Sunspot.remove_all
|
377
|
-
Sunspot.index!(Array.new(100) { Post.new })
|
378
|
-
result_sets = Array.new(2) do
|
379
|
-
Sunspot.search(Post) { order_by_random }.results.map do |result|
|
380
|
-
result.id
|
381
|
-
end
|
382
|
-
end
|
383
|
-
result_sets[0].should_not == result_sets[1]
|
384
|
-
end
|
385
|
-
end
|
386
|
-
end
|