sunspot 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/Gemfile +10 -0
  2. data/Gemfile.lock +32 -0
  3. data/History.txt +24 -0
  4. data/README.rdoc +18 -5
  5. data/lib/sunspot.rb +40 -0
  6. data/lib/sunspot/dsl.rb +2 -2
  7. data/lib/sunspot/dsl/field_query.rb +2 -2
  8. data/lib/sunspot/dsl/fields.rb +0 -10
  9. data/lib/sunspot/dsl/restriction.rb +4 -4
  10. data/lib/sunspot/dsl/restriction_with_near.rb +121 -0
  11. data/lib/sunspot/dsl/scope.rb +55 -67
  12. data/lib/sunspot/dsl/standard_query.rb +11 -15
  13. data/lib/sunspot/field.rb +30 -29
  14. data/lib/sunspot/field_factory.rb +0 -18
  15. data/lib/sunspot/installer/solrconfig_updater.rb +0 -30
  16. data/lib/sunspot/query.rb +4 -3
  17. data/lib/sunspot/query/common_query.rb +2 -2
  18. data/lib/sunspot/query/composite_fulltext.rb +7 -2
  19. data/lib/sunspot/query/connective.rb +21 -6
  20. data/lib/sunspot/query/dismax.rb +1 -0
  21. data/lib/sunspot/query/geo.rb +53 -0
  22. data/lib/sunspot/query/more_like_this.rb +1 -0
  23. data/lib/sunspot/query/restriction.rb +5 -5
  24. data/lib/sunspot/query/standard_query.rb +0 -4
  25. data/lib/sunspot/search/abstract_search.rb +1 -7
  26. data/lib/sunspot/search/hit.rb +10 -10
  27. data/lib/sunspot/search/query_facet.rb +8 -3
  28. data/lib/sunspot/session.rb +10 -2
  29. data/lib/sunspot/session_proxy.rb +16 -0
  30. data/lib/sunspot/session_proxy/master_slave_session_proxy.rb +1 -1
  31. data/lib/sunspot/session_proxy/sharding_session_proxy.rb +7 -0
  32. data/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +42 -0
  33. data/lib/sunspot/session_proxy/thread_local_session_proxy.rb +1 -1
  34. data/lib/sunspot/setup.rb +1 -17
  35. data/lib/sunspot/type.rb +38 -6
  36. data/lib/sunspot/util.rb +21 -31
  37. data/lib/sunspot/version.rb +1 -1
  38. data/solr/solr/conf/solrconfig.xml +0 -4
  39. data/spec/api/binding_spec.rb +12 -0
  40. data/spec/api/indexer/attributes_spec.rb +22 -22
  41. data/spec/api/query/connectives_examples.rb +14 -1
  42. data/spec/api/query/fulltext_examples.rb +3 -3
  43. data/spec/api/query/geo_examples.rb +69 -0
  44. data/spec/api/query/scope_examples.rb +32 -13
  45. data/spec/api/query/standard_spec.rb +1 -1
  46. data/spec/api/search/faceting_spec.rb +5 -1
  47. data/spec/api/search/hits_spec.rb +14 -12
  48. data/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +1 -1
  49. data/spec/api/session_proxy/sharding_session_proxy_spec.rb +1 -1
  50. data/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +24 -0
  51. data/spec/api/session_spec.rb +22 -0
  52. data/spec/integration/local_search_spec.rb +42 -69
  53. data/spec/integration/scoped_search_spec.rb +30 -0
  54. data/spec/mocks/connection.rb +6 -2
  55. data/spec/mocks/photo.rb +0 -1
  56. data/spec/mocks/post.rb +11 -2
  57. data/spec/mocks/user.rb +6 -1
  58. data/spec/spec_helper.rb +2 -12
  59. metadata +209 -177
  60. data/lib/sunspot/query/local.rb +0 -26
  61. data/solr/solr/lib/lucene-spatial-2.9.1.jar +0 -0
  62. data/solr/solr/lib/solr-spatial-light-0.0.6.jar +0 -0
  63. data/spec/api/query/local_examples.rb +0 -38
  64. data/tasks/gemspec.rake +0 -33
  65. data/tasks/rcov.rake +0 -28
  66. data/tasks/spec.rake +0 -24
@@ -1,26 +0,0 @@
1
- module Sunspot
2
- module Query
3
- #
4
- # This query component generates parameters for LocalSolr geo-radial
5
- # searches. The LocalSolr API is fairly rigid, so the Local component
6
- # doesn't have any options - it just takes coordinates and a radius, and
7
- # generates the appropriate parameters.
8
- #
9
- class Local #:nodoc:
10
- def initialize(coordinates, options)
11
- @coordinates, @options = Util::Coordinates.new(coordinates), options
12
- end
13
-
14
- def to_params
15
- local_params = [
16
- [:radius, @options[:distance]],
17
- [:sort, @options[:sort]]
18
- ].map do |key,value|
19
- "#{key}=#{value}" if value
20
- end.compact.join(" ") #TODO Centralized local param builder
21
- query = "{!#{local_params}}#{@coordinates.lat},#{@coordinates.lng}"
22
- { :spatial => query }
23
- end
24
- end
25
- end
26
- end
Binary file
@@ -1,38 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- shared_examples_for "spatial query" do
4
- it 'sends lat and lng, and distance when geo search is performed' do
5
- search do
6
- near [40.7, -73.5], :distance => 5
7
- end
8
- connection.should have_last_search_with(:spatial => "{!radius=5}40.7,-73.5")
9
- end
10
-
11
- it 'sets lat, lng, and sort flag when sorted geo search is performed' do
12
- search do
13
- near [40.7, -73.5], :sort => true
14
- end
15
- connection.should have_last_search_with(:spatial => "{!sort=true}40.7,-73.5")
16
- end
17
-
18
- it 'sets radius and sort when both are specified' do
19
- search do
20
- near [40.7, -73.5], :distance => 5, :sort => true
21
- end
22
- connection.should have_last_search_with(:spatial => "{!radius=5 sort=true}40.7,-73.5")
23
- end
24
-
25
- [
26
- [:lat, :lng],
27
- [:lat, :lon],
28
- [:lat, :long],
29
- [:latitude, :longitude]
30
- ].each do |lat_attr, lng_attr|
31
- it "sets coordinates using #{lat_attr.inspect}, #{lng_attr.inspect}" do
32
- search do
33
- near OpenStruct.new(lat_attr => 40.7, lng_attr => -73.5), :distance => 5
34
- end
35
- connection.should have_last_search_with(:spatial => "{!radius=5}40.7,-73.5")
36
- end
37
- end
38
- end
data/tasks/gemspec.rake DELETED
@@ -1,33 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', '..', 'tools', 'gem_tasks')
2
-
3
- Sunspot::GemTasks.new(:build => :copy_rdoc) do |s|
4
- s.name = 'sunspot'
5
- s.version = Sunspot::VERSION
6
- s.executables = ['sunspot-solr', 'sunspot-installer']
7
- s.email = 'mat@patch.com'
8
- s.homepage = 'http://outoftime.github.com/sunspot'
9
- s.summary = 'Library for expressive, powerful interaction with the Solr search engine'
10
- s.description = <<TEXT
11
- Sunspot is a library providing a powerful, all-ruby API for the Solr search engine. Sunspot manages the configuration of persistent Ruby classes for search and indexing and exposes Solr's most powerful features through a collection of DSLs. Complex search operations can be performed without hand-writing any boolean queries or building Solr parameters by hand.
12
- TEXT
13
- s.authors = ['Mat Brown', 'Peer Allan', 'Dmitriy Dzema', 'Benjamin Krause', 'Marcel de Graaf', 'Brandon Keepers', 'Peter Berkenbosch', 'Brian Atkinson', 'Tom Coleman', 'Matt Mitchell', 'Nathan Beyer', 'Kieran Topping', 'Nicolas Braem', 'Jeremy Ashkenas']
14
- s.rubyforge_project = 'sunspot'
15
- s.files = FileList['[A-Z]*', '{bin,installer,lib,spec,tasks,templates}/**/*', 'solr/{etc,lib,webapps}/**/*', 'solr/solr/{conf,lib}/*', 'solr/start.jar']
16
- s.add_runtime_dependency 'rsolr', '0.12.1'
17
- s.add_runtime_dependency 'escape', '0.0.4'
18
- s.add_development_dependency 'rspec', '~> 1.1'
19
- s.extra_rdoc_files = ['README.rdoc']
20
- s.test_files = FileList['spec/**/*_spec.rb']
21
- s.rdoc_options << '--webcvs=http://github.com/outoftime/sunspot/tree/master/%s' <<
22
- '--title' << 'Sunspot - Solr-powered search for Ruby objects - API Documentation' <<
23
- '--main' << 'README.rdoc'
24
-
25
- end
26
-
27
- task :copy_rdoc do
28
- sunspot_root = File.join(File.dirname(__FILE__), '..')
29
- FileUtils.cp(
30
- File.join(sunspot_root, '..', 'README.rdoc'),
31
- sunspot_root
32
- )
33
- end
data/tasks/rcov.rake DELETED
@@ -1,28 +0,0 @@
1
- require 'rake'
2
- require 'spec/rake/spectask'
3
-
4
- desc 'run specs with rcov'
5
- Spec::Rake::SpecTask.new('rcov') do |t|
6
- t.spec_files = FileList['spec/**/*_spec.rb']
7
- t.rcov = true
8
- t.rcov_dir = File.join('coverage', 'all')
9
- t.rcov_opts.concat(['--exclude', 'spec', '--sort', 'coverage', '--only-uncovered'])
10
- end
11
-
12
- namespace :rcov do
13
- desc 'run api specs with rcov'
14
- Spec::Rake::SpecTask.new('api') do |t|
15
- t.spec_files = FileList['spec/api/**/*_spec.rb']
16
- t.rcov = true
17
- t.rcov_dir = File.join('coverage', 'api')
18
- t.rcov_opts.concat(['--exclude', 'spec', '--sort', 'coverage', '--only-uncovered'])
19
- end
20
-
21
- desc 'run integration specs with rcov'
22
- Spec::Rake::SpecTask.new('integration') do |t|
23
- t.spec_files = FileList['spec/integration/**/*_spec.rb']
24
- t.rcov = true
25
- t.rcov_dir = File.join('coverage', 'integration')
26
- t.rcov_opts.concat(['--exclude', 'spec', '--sort', 'coverage', '--only-uncovered'])
27
- end
28
- end
data/tasks/spec.rake DELETED
@@ -1,24 +0,0 @@
1
- gem 'rspec', '~>1.1'
2
-
3
- require 'spec'
4
- require 'spec/rake/spectask'
5
-
6
- desc 'run specs'
7
- Spec::Rake::SpecTask.new('spec') do |t|
8
- t.spec_files = FileList[File.join(File.dirname(__FILE__), '..', 'spec', '**', '*_spec.rb')]
9
- t.spec_opts = ['--color']
10
- end
11
-
12
- namespace :spec do
13
- desc 'run api specs (mock out Solr dependency)'
14
- Spec::Rake::SpecTask.new('api') do |t|
15
- t.spec_files = FileList[File.join(File.dirname(__FILE__), '..', 'spec', 'api', '**', '*_spec.rb')]
16
- t.spec_opts = ['--color']
17
- end
18
-
19
- desc 'run integration specs (be sure to run `bin/sunspot-solr start`)'
20
- Spec::Rake::SpecTask.new('integration') do |t|
21
- t.spec_files = FileList[File.join(File.dirname(__FILE__), '..', 'spec', 'integration', '*_spec.rb')]
22
- t.spec_opts = ['--color']
23
- end
24
- end