sunspot 1.3.3 → 2.0.0.pre.111215

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.
Files changed (38) hide show
  1. data/History.txt +7 -10
  2. data/lib/sunspot/configuration.rb +5 -0
  3. data/lib/sunspot/dsl/field_group.rb +37 -0
  4. data/lib/sunspot/dsl/field_query.rb +48 -0
  5. data/lib/sunspot/dsl/restriction_with_near.rb +17 -0
  6. data/lib/sunspot/dsl.rb +1 -1
  7. data/lib/sunspot/query/common_query.rb +10 -0
  8. data/lib/sunspot/query/dismax.rb +5 -1
  9. data/lib/sunspot/query/field_group.rb +35 -0
  10. data/lib/sunspot/query/geofilt.rb +15 -0
  11. data/lib/sunspot/query/sort.rb +14 -0
  12. data/lib/sunspot/query/sort_composite.rb +3 -2
  13. data/lib/sunspot/query.rb +2 -2
  14. data/lib/sunspot/search/abstract_search.rb +52 -64
  15. data/lib/sunspot/search/field_group.rb +32 -0
  16. data/lib/sunspot/search/group.rb +35 -0
  17. data/lib/sunspot/search/hit_enumerable.rb +72 -0
  18. data/lib/sunspot/search/paginated_collection.rb +5 -3
  19. data/lib/sunspot/search.rb +1 -1
  20. data/lib/sunspot/session_proxy.rb +0 -8
  21. data/lib/sunspot/type.rb +21 -0
  22. data/lib/sunspot/version.rb +1 -1
  23. data/spec/api/class_set_spec.rb +1 -1
  24. data/spec/api/hit_enumerable_spec.rb +47 -0
  25. data/spec/api/query/group_spec.rb +32 -0
  26. data/spec/api/query/ordering_pagination_examples.rb +7 -0
  27. data/spec/api/query/spatial_examples.rb +11 -0
  28. data/spec/api/query/standard_spec.rb +1 -0
  29. data/spec/api/search/paginated_collection_spec.rb +10 -0
  30. data/spec/api/search/results_spec.rb +6 -0
  31. data/spec/integration/field_grouping_spec.rb +65 -0
  32. data/spec/integration/geospatial_spec.rb +59 -0
  33. data/spec/integration/highlighting_spec.rb +20 -0
  34. data/spec/mocks/post.rb +1 -0
  35. data/sunspot.gemspec +2 -1
  36. metadata +54 -34
  37. data/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb +0 -67
  38. data/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +0 -73
@@ -1,5 +1,5 @@
1
1
  %w(abstract_search standard_search more_like_this_search query_facet field_facet
2
- date_facet facet_row hit highlight).each do |file|
2
+ date_facet facet_row hit highlight field_group group hit_enumerable).each do |file|
3
3
  require File.join(File.dirname(__FILE__), 'search', file)
4
4
  end
5
5
 
@@ -83,13 +83,5 @@ module Sunspot
83
83
  'silent_fail_session_proxy'
84
84
  )
85
85
  )
86
- autoload(
87
- :Retry5xxSessionProxy,
88
- File.join(
89
- File.dirname(__FILE__),
90
- 'session_proxy',
91
- 'retry_5xx_session_proxy'
92
- )
93
- )
94
86
  end
95
87
  end
data/lib/sunspot/type.rb CHANGED
@@ -354,6 +354,27 @@ module Sunspot
354
354
  end
355
355
  end
356
356
 
357
+ #
358
+ # The Latlon type encodes geographical coordinates in the native
359
+ # Solr LatLonType.
360
+ #
361
+ # The data for this type must respond to the `lat` and `lng` methods; you
362
+ # can use Sunspot::Util::Coordinates as a wrapper if your source data does
363
+ # not follow this API.
364
+ #
365
+ # Location fields can be used with the geospatial DSL. See the
366
+ # Geospatial section of the README for examples.
367
+ #
368
+ class LatlonType < AbstractType
369
+ def indexed_name(name)
370
+ "#{name}_ll"
371
+ end
372
+
373
+ def to_indexed(value)
374
+ "#{value.lat.to_f},#{value.lng.to_f}"
375
+ end
376
+ end
377
+
357
378
  class ClassType < AbstractType
358
379
  def indexed_name(name) #:nodoc:
359
380
  'class_name'
@@ -1,3 +1,3 @@
1
1
  module Sunspot
2
- VERSION = '1.3.3'
2
+ VERSION = '2.0.0.pre.111215'
3
3
  end
@@ -7,7 +7,7 @@ describe Sunspot::ClassSet do
7
7
  set = described_class.new
8
8
  set << class1 << class2
9
9
 
10
- set.to_a.should == [class1, class2]
10
+ set.to_a.should =~ [class1, class2]
11
11
  end
12
12
 
13
13
  it "replaces classes with the same name" do
@@ -0,0 +1,47 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+
3
+ describe Sunspot::Search::HitEnumerable do
4
+ subject do
5
+ Class.new do
6
+ include Sunspot::Search::HitEnumerable
7
+ end.new
8
+ end
9
+
10
+ describe "#hits" do
11
+ before do
12
+ subject.stub(:solr_docs).and_return([{"id" => "Post 1", "score" => 3.14}])
13
+ subject.stub(:highlights_for)
14
+ end
15
+
16
+ it "retrieves the raw Solr response from #solr_docs and constructs Hit objects" do
17
+ Sunspot::Search::Hit.should_receive(:new).
18
+ with({"id" => "Post 1", "score" => 3.14}, anything, anything)
19
+
20
+ subject.hits
21
+ end
22
+
23
+ it "constructs Hit objects with highlights" do
24
+ subject.should_receive(:highlights_for).with({"id" => "Post 1", "score" => 3.14})
25
+
26
+ subject.hits
27
+ end
28
+
29
+ it "returns only verified hits if :verify => true is passed" do
30
+ Sunspot::Search::Hit.any_instance.stub(:result).and_return(nil)
31
+
32
+ subject.hits(:verify => true).should be_empty
33
+ end
34
+
35
+ it "returns an empty array if no results are available from Solr" do
36
+ subject.stub(:solr_docs).and_return(nil)
37
+
38
+ subject.hits.should == []
39
+ end
40
+
41
+ it "provides #populate_hits so that querying for one hit result will eager load the rest" do
42
+ Sunspot::Search::Hit.any_instance.should_receive(:result=)
43
+
44
+ subject.populate_hits
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('spec_helper', File.dirname(__FILE__))
2
+
3
+ describe "field grouping" do
4
+ it "sends grouping parameters to solr" do
5
+ session.search Post do
6
+ group :title
7
+ end
8
+
9
+ connection.should have_last_search_including(:group, "true")
10
+ connection.should have_last_search_including(:"group.field", "title_ss")
11
+ end
12
+
13
+ it "sends grouping limit parameters to solr" do
14
+ session.search Post do
15
+ group :title do
16
+ limit 2
17
+ end
18
+ end
19
+
20
+ connection.should have_last_search_including(:"group.limit", 2)
21
+ end
22
+
23
+ it "sends grouping sort parameters to solr" do
24
+ session.search Post do
25
+ group :title do
26
+ order_by :average_rating
27
+ end
28
+ end
29
+
30
+ connection.should have_last_search_including(:"group.sort", "average_rating_ft asc")
31
+ end
32
+ end
@@ -75,6 +75,13 @@ shared_examples_for 'sortable query' do
75
75
  connection.should have_last_search_with(:sort => 'score desc')
76
76
  end
77
77
 
78
+ it 'orders by geodist' do
79
+ search do
80
+ order_by_geodist :coordinates_new, 32, -68, :desc
81
+ end
82
+ connection.should have_last_search_with(:sort => 'geodist(coordinates_new_ll,32,-68) desc')
83
+ end
84
+
78
85
  it 'throws an ArgumentError if a bogus order direction is given' do
79
86
  lambda do
80
87
  search do
@@ -0,0 +1,11 @@
1
+ require 'bigdecimal'
2
+
3
+ shared_examples_for "spatial query" do
4
+ it 'filters by radius' do
5
+ search do
6
+ with(:coordinates_new).in_radius(23, -46, 100)
7
+ end
8
+
9
+ connection.should have_last_search_including(:fq, "{!geofilt sfield=coordinates_new_ll pt=23,-46 d=100}")
10
+ end
11
+ end
@@ -11,6 +11,7 @@ describe 'standard query', :type => :query do
11
11
  it_should_behave_like "sortable query"
12
12
  it_should_behave_like "query with text field scoping"
13
13
  it_should_behave_like "geohash query"
14
+ it_should_behave_like "spatial query"
14
15
 
15
16
  it 'adds a no-op query to :q parameter when no :q provided' do
16
17
  session.search Post do
@@ -14,6 +14,16 @@ describe "PaginatedCollection" do
14
14
  it { subject.next_page.should eql(2) }
15
15
  it { subject.out_of_bounds?.should_not be_true }
16
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
17
27
  end
18
28
 
19
29
  context "behaves like Kaminari" do
@@ -42,6 +42,12 @@ describe 'search results', :type => :search do
42
42
  session.search(Post) { paginate(:page => 1) }.total.should == 4
43
43
  end
44
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
+
45
51
  it 'returns total for nil search' do
46
52
  stub_nil_results
47
53
  session.search(Post).total.should == 0
@@ -0,0 +1,65 @@
1
+ require File.expand_path("../spec_helper", File.dirname(__FILE__))
2
+
3
+ describe "field grouping" do
4
+ before :each do
5
+ Sunspot.remove_all
6
+
7
+ @posts = [
8
+ Post.new(:title => "Title1", :ratings_average => 4),
9
+ Post.new(:title => "Title1", :ratings_average => 5),
10
+ Post.new(:title => "Title2", :ratings_average => 3)
11
+ ]
12
+
13
+ Sunspot.index!(*@posts)
14
+ end
15
+
16
+ it "allows grouping by a field" do
17
+ search = Sunspot.search(Post) do
18
+ group :title
19
+ end
20
+
21
+ search.group(:title).groups.should include { |g| g.value == "Title1" }
22
+ search.group(:title).groups.should include { |g| g.value == "Title2" }
23
+ end
24
+
25
+ it "provides access to the number of matches before grouping" do
26
+ search = Sunspot.search(Post) do
27
+ group :title
28
+ end
29
+
30
+ search.group(:title).matches.should == @posts.length
31
+ end
32
+
33
+ it "allows grouping by multiple fields" do
34
+ search = Sunspot.search(Post) do
35
+ group :title, :sort_title
36
+ end
37
+
38
+ search.group(:title).groups.should_not be_empty
39
+ search.group(:sort_title).groups.should_not be_empty
40
+ end
41
+
42
+ it "allows specification of the number of documents per group" do
43
+ search = Sunspot.search(Post) do
44
+ group :title do
45
+ limit 2
46
+ end
47
+ end
48
+
49
+ title1_group = search.group(:title).groups.detect { |g| g.value == "Title1" }
50
+ title1_group.hits.length.should == 2
51
+ end
52
+
53
+ it "allows specification of the sort within groups" do
54
+ search = Sunspot.search(Post) do
55
+ group :title do
56
+ order_by(:average_rating, :desc)
57
+ end
58
+ end
59
+
60
+ highest_ranked_post = @posts.sort_by { |p| -p.ratings_average }.first
61
+
62
+ title1_group = search.group(:title).groups.detect { |g| g.value == "Title1" }
63
+ title1_group.hits.first.primary_key.to_i.should == highest_ranked_post.id
64
+ end
65
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
+
3
+ describe "geospatial search" do
4
+ describe "filtering by radius" do
5
+ before :all do
6
+ Sunspot.remove_all
7
+
8
+ @post = Post.new(:title => "Howdy",
9
+ :coordinates => Sunspot::Util::Coordinates.new(32, -68))
10
+ Sunspot.index!(@post)
11
+ end
12
+
13
+ it "matches posts with the radius" do
14
+ results = Sunspot.search(Post) {
15
+ with(:coordinates_new).in_radius(32, -68, 1)
16
+ }.results
17
+
18
+ results.should include(@post)
19
+ end
20
+
21
+ it "filters out posts not in the radius" do
22
+ results = Sunspot.search(Post) {
23
+ with(:coordinates_new).in_radius(33, -68, 1)
24
+ }.results
25
+
26
+ results.should_not include(@post)
27
+ end
28
+ end
29
+
30
+ describe "ordering by geodist" do
31
+ before :all do
32
+ Sunspot.remove_all
33
+
34
+ @posts = [
35
+ Post.new(:title => "Howdy", :coordinates => Sunspot::Util::Coordinates.new(34, -68)),
36
+ Post.new(:title => "Howdy", :coordinates => Sunspot::Util::Coordinates.new(33, -68)),
37
+ Post.new(:title => "Howdy", :coordinates => Sunspot::Util::Coordinates.new(32, -68))
38
+ ]
39
+
40
+ Sunspot.index!(@posts)
41
+ end
42
+
43
+ it "orders posts by distance ascending" do
44
+ results = Sunspot.search(Post) {
45
+ order_by_geodist(:coordinates_new, 32, -68)
46
+ }.results
47
+
48
+ results.should == @posts.reverse
49
+ end
50
+
51
+ it "orders posts by distance descending" do
52
+ results = Sunspot.search(Post) {
53
+ order_by_geodist(:coordinates_new, 32, -68, :desc)
54
+ }.results
55
+
56
+ results.should == @posts
57
+ end
58
+ end
59
+ end
@@ -5,6 +5,7 @@ describe 'keyword highlighting' do
5
5
  @posts = []
6
6
  @posts << Post.new(:body => 'And the fox laughed')
7
7
  @posts << Post.new(:body => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', :blog_id => 1)
8
+ @posts << Post.new(:body => 'Lorem ipsum dolor sit amet', :title => 'consectetur adipiscing elit', :blog_id => 1)
8
9
  Sunspot.index!(*@posts)
9
10
  @search_result = Sunspot.search(Post) { keywords 'fox', :highlight => true }
10
11
  end
@@ -21,4 +22,23 @@ describe 'keyword highlighting' do
21
22
  search_result = Sunspot.search(Post){ with :blog_id, 1 }
22
23
  search_result.hits.first.highlights.should be_empty
23
24
  end
25
+
26
+ it "should process multiple keyword request on different fields with highlights correctly" do
27
+ search_results = nil
28
+ lambda do
29
+ search_results = Sunspot.search(Post) do
30
+ keywords 'Lorem ipsum', :fields => [:body] do
31
+ highlight :body
32
+ end
33
+ keywords 'consectetur', :fields => [:title] do
34
+ highlight :title
35
+ end
36
+ end
37
+ end.should_not raise_error(RSolr::Error::Http)
38
+ search_results.results.length.should eq(1)
39
+ search_results.results.first.should eq(@posts.last)
40
+ # this one might be a Solr bug, therefore not related to Sunspot itself
41
+ # search_results.hits.first.highlights.should_not be_empty
42
+ end
43
+
24
44
  end
data/spec/mocks/post.rb CHANGED
@@ -54,6 +54,7 @@ Sunspot.setup(Post) do
54
54
  Time.now
55
55
  end
56
56
  location :coordinates
57
+ latlon(:coordinates_new) { coordinates }
57
58
 
58
59
  dynamic_string :custom_string, :stored => true
59
60
  dynamic_float :custom_float, :multiple => true, :using => :custom_fl
data/sunspot.gemspec CHANGED
@@ -25,7 +25,8 @@ Gem::Specification.new do |s|
25
25
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
26
  s.require_paths = ["lib"]
27
27
 
28
- s.add_dependency 'rsolr', '~>1.0.7'
28
+ s.add_dependency 'rsolr', '~>1.0.6'
29
+ s.add_dependency 'escape', '~>0.0.4'
29
30
  s.add_dependency 'pr_geohash', '~>1.0'
30
31
 
31
32
  s.add_development_dependency 'rspec', '~>2.6.0'
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sunspot
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
4
+ prerelease: true
6
5
  segments:
7
- - 1
8
- - 3
9
- - 3
10
- version: 1.3.3
6
+ - 2
7
+ - 0
8
+ - 0
9
+ - pre
10
+ - 111215
11
+ version: 2.0.0.pre.111215
11
12
  platform: ruby
12
13
  authors:
13
14
  - Mat Brown
@@ -33,69 +34,76 @@ autorequire:
33
34
  bindir: bin
34
35
  cert_chain: []
35
36
 
36
- date: 2012-06-11 00:00:00 Z
37
+ date: 2011-12-15 00:00:00 -07:00
38
+ default_executable:
37
39
  dependencies:
38
40
  - !ruby/object:Gem::Dependency
39
41
  name: rsolr
40
42
  prerelease: false
41
43
  requirement: &id001 !ruby/object:Gem::Requirement
42
- none: false
43
44
  requirements:
44
45
  - - ~>
45
46
  - !ruby/object:Gem::Version
46
- hash: 25
47
47
  segments:
48
48
  - 1
49
49
  - 0
50
- - 7
51
- version: 1.0.7
50
+ - 6
51
+ version: 1.0.6
52
52
  type: :runtime
53
53
  version_requirements: *id001
54
54
  - !ruby/object:Gem::Dependency
55
- name: pr_geohash
55
+ name: escape
56
56
  prerelease: false
57
57
  requirement: &id002 !ruby/object:Gem::Requirement
58
- none: false
59
58
  requirements:
60
59
  - - ~>
61
60
  - !ruby/object:Gem::Version
62
- hash: 15
61
+ segments:
62
+ - 0
63
+ - 0
64
+ - 4
65
+ version: 0.0.4
66
+ type: :runtime
67
+ version_requirements: *id002
68
+ - !ruby/object:Gem::Dependency
69
+ name: pr_geohash
70
+ prerelease: false
71
+ requirement: &id003 !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
63
75
  segments:
64
76
  - 1
65
77
  - 0
66
78
  version: "1.0"
67
79
  type: :runtime
68
- version_requirements: *id002
80
+ version_requirements: *id003
69
81
  - !ruby/object:Gem::Dependency
70
82
  name: rspec
71
83
  prerelease: false
72
- requirement: &id003 !ruby/object:Gem::Requirement
73
- none: false
84
+ requirement: &id004 !ruby/object:Gem::Requirement
74
85
  requirements:
75
86
  - - ~>
76
87
  - !ruby/object:Gem::Version
77
- hash: 23
78
88
  segments:
79
89
  - 2
80
90
  - 6
81
91
  - 0
82
92
  version: 2.6.0
83
93
  type: :development
84
- version_requirements: *id003
94
+ version_requirements: *id004
85
95
  - !ruby/object:Gem::Dependency
86
96
  name: hanna
87
97
  prerelease: false
88
- requirement: &id004 !ruby/object:Gem::Requirement
89
- none: false
98
+ requirement: &id005 !ruby/object:Gem::Requirement
90
99
  requirements:
91
100
  - - ">="
92
101
  - !ruby/object:Gem::Version
93
- hash: 3
94
102
  segments:
95
103
  - 0
96
104
  version: "0"
97
105
  type: :development
98
- version_requirements: *id004
106
+ version_requirements: *id005
99
107
  description: " Sunspot is a library providing a powerful, all-ruby API for the Solr search engine. Sunspot manages the configuration of persistent\n Ruby classes for search and indexing and exposes Solr's most powerful features through a collection of DSLs. Complex search operations\n can be performed without hand-writing any boolean queries or building Solr parameters by hand.\n"
100
108
  email:
101
109
  - mat@patch.com
@@ -121,6 +129,7 @@ files:
121
129
  - lib/sunspot/data_extractor.rb
122
130
  - lib/sunspot/dsl.rb
123
131
  - lib/sunspot/dsl/adjustable.rb
132
+ - lib/sunspot/dsl/field_group.rb
124
133
  - lib/sunspot/dsl/field_query.rb
125
134
  - lib/sunspot/dsl/fields.rb
126
135
  - lib/sunspot/dsl/fulltext.rb
@@ -146,9 +155,11 @@ files:
146
155
  - lib/sunspot/query/date_field_facet.rb
147
156
  - lib/sunspot/query/dismax.rb
148
157
  - lib/sunspot/query/field_facet.rb
158
+ - lib/sunspot/query/field_group.rb
149
159
  - lib/sunspot/query/filter.rb
150
160
  - lib/sunspot/query/function_query.rb
151
161
  - lib/sunspot/query/geo.rb
162
+ - lib/sunspot/query/geofilt.rb
152
163
  - lib/sunspot/query/highlighting.rb
153
164
  - lib/sunspot/query/more_like_this.rb
154
165
  - lib/sunspot/query/more_like_this_query.rb
@@ -166,8 +177,11 @@ files:
166
177
  - lib/sunspot/search/date_facet.rb
167
178
  - lib/sunspot/search/facet_row.rb
168
179
  - lib/sunspot/search/field_facet.rb
180
+ - lib/sunspot/search/field_group.rb
181
+ - lib/sunspot/search/group.rb
169
182
  - lib/sunspot/search/highlight.rb
170
183
  - lib/sunspot/search/hit.rb
184
+ - lib/sunspot/search/hit_enumerable.rb
171
185
  - lib/sunspot/search/more_like_this_search.rb
172
186
  - lib/sunspot/search/paginated_collection.rb
173
187
  - lib/sunspot/search/query_facet.rb
@@ -178,7 +192,6 @@ files:
178
192
  - lib/sunspot/session_proxy/class_sharding_session_proxy.rb
179
193
  - lib/sunspot/session_proxy/id_sharding_session_proxy.rb
180
194
  - lib/sunspot/session_proxy/master_slave_session_proxy.rb
181
- - lib/sunspot/session_proxy/retry_5xx_session_proxy.rb
182
195
  - lib/sunspot/session_proxy/sharding_session_proxy.rb
183
196
  - lib/sunspot/session_proxy/silent_fail_session_proxy.rb
184
197
  - lib/sunspot/session_proxy/thread_local_session_proxy.rb
@@ -193,6 +206,7 @@ files:
193
206
  - spec/api/adapters_spec.rb
194
207
  - spec/api/binding_spec.rb
195
208
  - spec/api/class_set_spec.rb
209
+ - spec/api/hit_enumerable_spec.rb
196
210
  - spec/api/indexer/attributes_spec.rb
197
211
  - spec/api/indexer/batch_spec.rb
198
212
  - spec/api/indexer/dynamic_fields_spec.rb
@@ -209,10 +223,12 @@ files:
209
223
  - spec/api/query/fulltext_examples.rb
210
224
  - spec/api/query/function_spec.rb
211
225
  - spec/api/query/geo_examples.rb
226
+ - spec/api/query/group_spec.rb
212
227
  - spec/api/query/highlighting_examples.rb
213
228
  - spec/api/query/more_like_this_spec.rb
214
229
  - spec/api/query/ordering_pagination_examples.rb
215
230
  - spec/api/query/scope_examples.rb
231
+ - spec/api/query/spatial_examples.rb
216
232
  - spec/api/query/spec_helper.rb
217
233
  - spec/api/query/standard_spec.rb
218
234
  - spec/api/query/text_field_scoping_examples.rb
@@ -228,7 +244,6 @@ files:
228
244
  - spec/api/session_proxy/class_sharding_session_proxy_spec.rb
229
245
  - spec/api/session_proxy/id_sharding_session_proxy_spec.rb
230
246
  - spec/api/session_proxy/master_slave_session_proxy_spec.rb
231
- - spec/api/session_proxy/retry_5xx_session_proxy_spec.rb
232
247
  - spec/api/session_proxy/sharding_session_proxy_spec.rb
233
248
  - spec/api/session_proxy/silent_fail_session_proxy_spec.rb
234
249
  - spec/api/session_proxy/spec_helper.rb
@@ -244,6 +259,8 @@ files:
244
259
  - spec/helpers/search_helper.rb
245
260
  - spec/integration/dynamic_fields_spec.rb
246
261
  - spec/integration/faceting_spec.rb
262
+ - spec/integration/field_grouping_spec.rb
263
+ - spec/integration/geospatial_spec.rb
247
264
  - spec/integration/highlighting_spec.rb
248
265
  - spec/integration/indexing_spec.rb
249
266
  - spec/integration/keyword_search_spec.rb
@@ -270,6 +287,7 @@ files:
270
287
  - tasks/rdoc.rake
271
288
  - tasks/schema.rake
272
289
  - tasks/todo.rake
290
+ has_rdoc: true
273
291
  homepage: http://outoftime.github.com/sunspot
274
292
  licenses: []
275
293
 
@@ -283,27 +301,25 @@ rdoc_options:
283
301
  require_paths:
284
302
  - lib
285
303
  required_ruby_version: !ruby/object:Gem::Requirement
286
- none: false
287
304
  requirements:
288
305
  - - ">="
289
306
  - !ruby/object:Gem::Version
290
- hash: 3
291
307
  segments:
292
308
  - 0
293
309
  version: "0"
294
310
  required_rubygems_version: !ruby/object:Gem::Requirement
295
- none: false
296
311
  requirements:
297
- - - ">="
312
+ - - ">"
298
313
  - !ruby/object:Gem::Version
299
- hash: 3
300
314
  segments:
301
- - 0
302
- version: "0"
315
+ - 1
316
+ - 3
317
+ - 1
318
+ version: 1.3.1
303
319
  requirements: []
304
320
 
305
321
  rubyforge_project: sunspot
306
- rubygems_version: 1.8.15
322
+ rubygems_version: 1.3.6
307
323
  signing_key:
308
324
  specification_version: 3
309
325
  summary: Library for expressive, powerful interaction with the Solr search engine
@@ -311,6 +327,7 @@ test_files:
311
327
  - spec/api/adapters_spec.rb
312
328
  - spec/api/binding_spec.rb
313
329
  - spec/api/class_set_spec.rb
330
+ - spec/api/hit_enumerable_spec.rb
314
331
  - spec/api/indexer/attributes_spec.rb
315
332
  - spec/api/indexer/batch_spec.rb
316
333
  - spec/api/indexer/dynamic_fields_spec.rb
@@ -327,10 +344,12 @@ test_files:
327
344
  - spec/api/query/fulltext_examples.rb
328
345
  - spec/api/query/function_spec.rb
329
346
  - spec/api/query/geo_examples.rb
347
+ - spec/api/query/group_spec.rb
330
348
  - spec/api/query/highlighting_examples.rb
331
349
  - spec/api/query/more_like_this_spec.rb
332
350
  - spec/api/query/ordering_pagination_examples.rb
333
351
  - spec/api/query/scope_examples.rb
352
+ - spec/api/query/spatial_examples.rb
334
353
  - spec/api/query/spec_helper.rb
335
354
  - spec/api/query/standard_spec.rb
336
355
  - spec/api/query/text_field_scoping_examples.rb
@@ -346,7 +365,6 @@ test_files:
346
365
  - spec/api/session_proxy/class_sharding_session_proxy_spec.rb
347
366
  - spec/api/session_proxy/id_sharding_session_proxy_spec.rb
348
367
  - spec/api/session_proxy/master_slave_session_proxy_spec.rb
349
- - spec/api/session_proxy/retry_5xx_session_proxy_spec.rb
350
368
  - spec/api/session_proxy/sharding_session_proxy_spec.rb
351
369
  - spec/api/session_proxy/silent_fail_session_proxy_spec.rb
352
370
  - spec/api/session_proxy/spec_helper.rb
@@ -362,6 +380,8 @@ test_files:
362
380
  - spec/helpers/search_helper.rb
363
381
  - spec/integration/dynamic_fields_spec.rb
364
382
  - spec/integration/faceting_spec.rb
383
+ - spec/integration/field_grouping_spec.rb
384
+ - spec/integration/geospatial_spec.rb
365
385
  - spec/integration/highlighting_spec.rb
366
386
  - spec/integration/indexing_spec.rb
367
387
  - spec/integration/keyword_search_spec.rb