sunspot 2.5.0 → 2.6.0
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.
- checksums.yaml +4 -4
- data/lib/sunspot/adapters.rb +14 -3
- data/lib/sunspot/data_extractor.rb +1 -1
- data/lib/sunspot/dsl/fulltext.rb +1 -1
- data/lib/sunspot/dsl/standard_query.rb +29 -1
- data/lib/sunspot/dsl.rb +2 -2
- data/lib/sunspot/field.rb +15 -4
- data/lib/sunspot/indexer.rb +37 -8
- data/lib/sunspot/query/abstract_fulltext.rb +7 -3
- data/lib/sunspot/query/abstract_json_field_facet.rb +3 -0
- data/lib/sunspot/query/composite_fulltext.rb +21 -2
- data/lib/sunspot/query/date_field_json_facet.rb +2 -16
- data/lib/sunspot/query/dismax.rb +10 -4
- data/lib/sunspot/query/function_query.rb +25 -1
- data/lib/sunspot/query/join.rb +1 -1
- data/lib/sunspot/query/range_json_facet.rb +5 -2
- data/lib/sunspot/query/restriction.rb +10 -9
- data/lib/sunspot/query/standard_query.rb +12 -0
- data/lib/sunspot/search/field_json_facet.rb +14 -3
- data/lib/sunspot/session.rb +6 -4
- data/lib/sunspot/setup.rb +38 -0
- data/lib/sunspot/util.rb +4 -11
- data/lib/sunspot/version.rb +1 -1
- data/lib/sunspot.rb +9 -1
- data/spec/api/indexer/removal_spec.rb +87 -0
- data/spec/api/query/connective_boost_examples.rb +85 -0
- data/spec/api/query/join_spec.rb +2 -2
- data/spec/api/query/standard_spec.rb +10 -0
- data/spec/api/setup_spec.rb +99 -0
- data/spec/helpers/indexer_helper.rb +22 -0
- data/spec/integration/atomic_updates_spec.rb +169 -5
- data/spec/integration/faceting_spec.rb +68 -34
- data/spec/integration/join_spec.rb +22 -3
- data/spec/integration/scoped_search_spec.rb +78 -0
- data/spec/mocks/connection.rb +6 -0
- data/spec/mocks/photo.rb +11 -7
- data/spec/mocks/post.rb +35 -1
- data/sunspot.gemspec +0 -2
- metadata +10 -6
@@ -84,7 +84,7 @@ describe 'search faceting' do
|
|
84
84
|
end
|
85
85
|
expect(search.facet(:title).rows.map { |row| row.value }).to include('zero')
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
it 'should return facet rows from an offset' do
|
89
89
|
search = Sunspot.search(Post) do
|
90
90
|
facet :title, :offset => 3
|
@@ -214,6 +214,15 @@ describe 'search faceting' do
|
|
214
214
|
expect(search.facet(:title).rows.map { |row| row.value }).to eq(%w(four three two one))
|
215
215
|
end
|
216
216
|
|
217
|
+
it 'should include allBuckets and missing' do
|
218
|
+
search = Sunspot.search(Post) do
|
219
|
+
with :blog_id, 1
|
220
|
+
json_facet :title, all_buckets: true, missing: true
|
221
|
+
end
|
222
|
+
expect(search.facet(:title).other_count('allBuckets')).to eq(10)
|
223
|
+
expect(search.facet(:title).other_count('missing')).to eq(1)
|
224
|
+
end
|
225
|
+
|
217
226
|
it 'should limit facet values by prefix' do
|
218
227
|
search = Sunspot.search(Post) do
|
219
228
|
with :blog_id, 1
|
@@ -221,7 +230,64 @@ describe 'search faceting' do
|
|
221
230
|
end
|
222
231
|
expect(search.facet(:title).rows.map { |row| row.value }.sort).to eq(%w(three two))
|
223
232
|
end
|
233
|
+
end
|
224
234
|
|
235
|
+
context 'date or time json facet' do
|
236
|
+
before :all do
|
237
|
+
Sunspot.remove_all
|
238
|
+
posts = [
|
239
|
+
Post.new(title: 'dt test', blog_id: 1, published_at: Time.new(2020, 8, 20)),
|
240
|
+
Post.new(title: 'dt test', blog_id: 1, published_at: Time.new(2020, 7, 20)),
|
241
|
+
Post.new(title: 'dt test', blog_id: 1, published_at: Time.new(2020, 6, 20)),
|
242
|
+
Post.new(title: 'dt test', blog_id: 1, published_at: Time.new(2020, 6, 15)),
|
243
|
+
Post.new(title: 'dt test', blog_id: 1, published_at: Time.new(2020, 5, 20)),
|
244
|
+
Post.new(title: 'dt test', blog_id: 1, published_at: Time.new(2020, 4, 20)),
|
245
|
+
Post.new(title: 'dt test', blog_id: 1, published_at: Time.new(2020, 3, 20))
|
246
|
+
]
|
247
|
+
posts.each { |p| Sunspot.index(p) }
|
248
|
+
Sunspot.commit
|
249
|
+
end
|
250
|
+
|
251
|
+
it 'facets properly with the range specified as time_range' do
|
252
|
+
time_range = [Time.new(2020, 4, 1), Time.new(2020, 7, 31)]
|
253
|
+
search = Sunspot.search(Post) do
|
254
|
+
with :blog_id, 1
|
255
|
+
json_facet :published_at, time_range: time_range, gap: 1, gap_unit: 'MONTHS'
|
256
|
+
end
|
257
|
+
expected_rows = [
|
258
|
+
{ count: 1, value: Time.new(2020, 4, 1).utc.iso8601 },
|
259
|
+
{ count: 1, value: Time.new(2020, 5, 1).utc.iso8601 },
|
260
|
+
{ count: 2, value: Time.new(2020, 6, 1).utc.iso8601 },
|
261
|
+
{ count: 1, value: Time.new(2020, 7, 1).utc.iso8601 }
|
262
|
+
]
|
263
|
+
expect(search.facet(:published_at).rows.map { |row| { count: row.count, value: row.value } }).to eq(expected_rows)
|
264
|
+
end
|
265
|
+
|
266
|
+
it 'should use custom gap parameters if provided' do
|
267
|
+
time_range = [Time.new(2020, 4, 1), Time.new(2020, 7, 31)]
|
268
|
+
search = Sunspot.search(Post) do
|
269
|
+
with :blog_id, 1
|
270
|
+
json_facet :published_at, range: time_range, gap: 1, gap_unit: 'MONTHS'
|
271
|
+
end
|
272
|
+
expected_rows = [
|
273
|
+
{ count: 1, value: Time.new(2020, 4, 1).utc.iso8601 },
|
274
|
+
{ count: 1, value: Time.new(2020, 5, 1).utc.iso8601 },
|
275
|
+
{ count: 2, value: Time.new(2020, 6, 1).utc.iso8601 },
|
276
|
+
{ count: 1, value: Time.new(2020, 7, 1).utc.iso8601 }
|
277
|
+
]
|
278
|
+
expect(search.facet(:published_at).rows.map { |row| { count: row.count, value: row.value } }).to eq(expected_rows)
|
279
|
+
end
|
280
|
+
|
281
|
+
it 'should support computing other statistics' do
|
282
|
+
time_range = [Time.new(2020, 5, 1), Time.new(2020, 7, 1)]
|
283
|
+
search = Sunspot.search(Post) do
|
284
|
+
with :blog_id, 1
|
285
|
+
json_facet :published_at, range: time_range, gap: 1, gap_unit: 'MONTHS', other: 'all'
|
286
|
+
end
|
287
|
+
expect(search.facet(:published_at).other_count('before')).to eq(2)
|
288
|
+
expect(search.facet(:published_at).other_count('after')).to eq(2)
|
289
|
+
expect(search.facet(:published_at).other_count('between')).to eq(3)
|
290
|
+
end
|
225
291
|
end
|
226
292
|
|
227
293
|
context 'nested json facet' do
|
@@ -237,7 +303,7 @@ describe 'search faceting' do
|
|
237
303
|
end
|
238
304
|
|
239
305
|
0.upto(9) { |i| Sunspot.index(Post.new(:title => 'zero', :author_name => "another#{i}", :blog_id => 1)) }
|
240
|
-
|
306
|
+
|
241
307
|
Sunspot.commit
|
242
308
|
end
|
243
309
|
|
@@ -459,38 +525,6 @@ describe 'search faceting' do
|
|
459
525
|
expect(search.facet(:published_at).rows.last.value).to eq((time + 60*60*24)..(time + 60*60*24*2))
|
460
526
|
expect(search.facet(:published_at).rows.last.count).to eq(1)
|
461
527
|
end
|
462
|
-
|
463
|
-
it 'json facet should return time ranges' do
|
464
|
-
days_diff = 15
|
465
|
-
time_from = Time.utc(2009, 7, 8)
|
466
|
-
time_to = Time.utc(2009, 7, 8 + days_diff)
|
467
|
-
search = Sunspot.search(Post) do
|
468
|
-
json_facet(
|
469
|
-
:published_at,
|
470
|
-
:time_range => time_from..time_to
|
471
|
-
)
|
472
|
-
end
|
473
|
-
|
474
|
-
expect(search.facet(:published_at).rows.size).to eq(days_diff)
|
475
|
-
expect(search.facet(:published_at).rows[0].count).to eq(2)
|
476
|
-
expect(search.facet(:published_at).rows[1].count).to eq(1)
|
477
|
-
end
|
478
|
-
|
479
|
-
it 'json facet should return time ranges with custom gap' do
|
480
|
-
days_diff = 10
|
481
|
-
time_from = Time.utc(2009, 7, 8)
|
482
|
-
time_to = Time.utc(2009, 7, 8 + days_diff)
|
483
|
-
search = Sunspot.search(Post) do
|
484
|
-
json_facet(
|
485
|
-
:published_at,
|
486
|
-
:time_range => time_from..time_to,
|
487
|
-
gap: 60*60*24*2
|
488
|
-
)
|
489
|
-
end
|
490
|
-
expect(search.facet(:published_at).rows.size).to eq(days_diff / 2)
|
491
|
-
expect(search.facet(:published_at).rows[0].count).to eq(3)
|
492
|
-
end
|
493
|
-
|
494
528
|
end
|
495
529
|
|
496
530
|
context 'class facets' do
|
@@ -8,9 +8,9 @@ describe "searching by joined fields" do
|
|
8
8
|
@container2 = PhotoContainer.new(:id => 2).tap { |c| allow(c).to receive(:id).and_return(2) }
|
9
9
|
@container3 = PhotoContainer.new(:id => 3).tap { |c| allow(c).to receive(:id).and_return(3) }
|
10
10
|
|
11
|
-
@picture = Picture.new(:photo_container_id => @container1.id, :description => "one")
|
12
|
-
@photo1 = Photo.new(:photo_container_id => @container1.id, :description => "two")
|
13
|
-
@photo2 = Photo.new(:photo_container_id => @container2.id, :description => "three")
|
11
|
+
@picture = Picture.new(:photo_container_id => @container1.id, :description => "one", :published => true)
|
12
|
+
@photo1 = Photo.new(:photo_container_id => @container1.id, :description => "two", :published => true)
|
13
|
+
@photo2 = Photo.new(:photo_container_id => @container2.id, :description => "three", :published => false)
|
14
14
|
|
15
15
|
Sunspot.index!(@container1, @container2, @photo1, @photo2, @picture)
|
16
16
|
end
|
@@ -42,4 +42,23 @@ describe "searching by joined fields" do
|
|
42
42
|
expect(results).to eq res
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
46
|
+
it "matches by joined fields when using filter queries" do
|
47
|
+
{
|
48
|
+
:photo_published => [
|
49
|
+
[true, [@container1]],
|
50
|
+
[false, [@container2]]
|
51
|
+
],
|
52
|
+
:picture_published => [
|
53
|
+
[true, [@container1]],
|
54
|
+
[false, []]
|
55
|
+
]
|
56
|
+
}.each do |key, data|
|
57
|
+
data.each do |(value, res)|
|
58
|
+
results = Sunspot.search(PhotoContainer) { with(key, value) }.results
|
59
|
+
|
60
|
+
expect(results).to eq res
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
45
64
|
end
|
@@ -538,4 +538,82 @@ describe 'scoped_search' do
|
|
538
538
|
expect(search.results.first).to eq(@p1)
|
539
539
|
end
|
540
540
|
end
|
541
|
+
|
542
|
+
describe 'boosting' do
|
543
|
+
before :all do
|
544
|
+
Sunspot.remove_all
|
545
|
+
@p1 = Post.new(:title => 'Post', :body => 'Lorem', :blog_id => 1, :category_ids => [3], :ratings_average => 30)
|
546
|
+
@p2 = Post.new(:title => 'Post', :body => 'Ipsum', :blog_id => 2, :category_ids => [2], :ratings_average => 60)
|
547
|
+
@p3 = Post.new(:title => 'Post', :body => 'Dolor', :blog_id => 3, :category_ids => [1], :ratings_average => 90)
|
548
|
+
Sunspot.index([@p1, @p2, @p3])
|
549
|
+
Sunspot.commit
|
550
|
+
end
|
551
|
+
|
552
|
+
it 'without boost should returns post in default order' do
|
553
|
+
search = Sunspot.search(Post) {}
|
554
|
+
|
555
|
+
expect(search.results[0]).to eq(@p1)
|
556
|
+
expect(search.results[1]).to eq(@p2)
|
557
|
+
expect(search.results[2]).to eq(@p3)
|
558
|
+
end
|
559
|
+
|
560
|
+
it 'should apply boost function' do
|
561
|
+
search = Sunspot.search(Post) do
|
562
|
+
boost(function() { field(:average_rating) })
|
563
|
+
end
|
564
|
+
|
565
|
+
expect(search.results[0]).to eq(@p3)
|
566
|
+
expect(search.results[1]).to eq(@p2)
|
567
|
+
expect(search.results[2]).to eq(@p1)
|
568
|
+
end
|
569
|
+
|
570
|
+
it 'should apply multilicative boost function' do
|
571
|
+
search = Sunspot.search(Post) do
|
572
|
+
boost_multiplicative(function() { field(:average_rating) })
|
573
|
+
end
|
574
|
+
|
575
|
+
expect(search.results[0]).to eq(@p3)
|
576
|
+
expect(search.results[1]).to eq(@p2)
|
577
|
+
expect(search.results[2]).to eq(@p1)
|
578
|
+
end
|
579
|
+
|
580
|
+
it 'should apply boost query' do
|
581
|
+
search = Sunspot.search(Post) do
|
582
|
+
boost(5) do
|
583
|
+
with(:blog_id, 1)
|
584
|
+
end
|
585
|
+
|
586
|
+
boost(10) do
|
587
|
+
with(:blog_id, 3)
|
588
|
+
end
|
589
|
+
end
|
590
|
+
|
591
|
+
expect(search.results[0]).to eq(@p3)
|
592
|
+
expect(search.results[1]).to eq(@p1)
|
593
|
+
expect(search.results[2]).to eq(@p2)
|
594
|
+
end
|
595
|
+
|
596
|
+
it 'should work properly when combined with fulltext' do
|
597
|
+
search = Sunspot.search(Post) do
|
598
|
+
fulltext('Post Ipsum') do
|
599
|
+
boost_fields :body => 0.2
|
600
|
+
minimum_match 1
|
601
|
+
end
|
602
|
+
|
603
|
+
boost(0.9) do
|
604
|
+
with(:blog_id, 1)
|
605
|
+
end
|
606
|
+
|
607
|
+
boost(function() { div(field(:average_rating), 100) })
|
608
|
+
|
609
|
+
fulltext('Post') do
|
610
|
+
minimum_match 1
|
611
|
+
end
|
612
|
+
end
|
613
|
+
|
614
|
+
expect(search.results[0]).to eq(@p2)
|
615
|
+
expect(search.results[1]).to eq(@p3)
|
616
|
+
expect(search.results[2]).to eq(@p1)
|
617
|
+
end
|
618
|
+
end
|
541
619
|
end
|
data/spec/mocks/connection.rb
CHANGED
data/spec/mocks/photo.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Photo < MockRecord
|
2
|
-
attr_accessor :caption, :description, :lat, :lng, :size, :average_rating, :created_at, :post_id, :photo_container_id
|
2
|
+
attr_accessor :caption, :description, :lat, :lng, :size, :average_rating, :created_at, :post_id, :photo_container_id, :published
|
3
3
|
end
|
4
4
|
|
5
5
|
Sunspot.setup(Photo) do
|
@@ -7,6 +7,7 @@ Sunspot.setup(Photo) do
|
|
7
7
|
text :description
|
8
8
|
string :caption
|
9
9
|
integer :photo_container_id
|
10
|
+
boolean :published
|
10
11
|
boost 0.75
|
11
12
|
integer :size, :trie => true
|
12
13
|
float :average_rating, :trie => true
|
@@ -14,12 +15,13 @@ Sunspot.setup(Photo) do
|
|
14
15
|
end
|
15
16
|
|
16
17
|
class Picture < MockRecord
|
17
|
-
attr_accessor :description, :photo_container_id
|
18
|
+
attr_accessor :description, :photo_container_id, :published
|
18
19
|
end
|
19
20
|
|
20
21
|
Sunspot.setup(Picture) do
|
21
22
|
text :description
|
22
23
|
integer :photo_container_id
|
24
|
+
boolean :published
|
23
25
|
end
|
24
26
|
|
25
27
|
class PhotoContainer < MockRecord
|
@@ -34,9 +36,11 @@ Sunspot.setup(PhotoContainer) do
|
|
34
36
|
integer :id
|
35
37
|
text :description, :default_boost => 1.2
|
36
38
|
|
37
|
-
join(:caption, :target => Photo, :type => :string, :join => { :from => :photo_container_id, :to => :id })
|
38
|
-
join(:photo_rating, :target => Photo, :type => :trie_float, :join => { :from => :photo_container_id, :to => :id }, :as => 'average_rating_ft')
|
39
|
-
join(:caption, :target => Photo, :type => :text, :join => { :from => :photo_container_id, :to => :id })
|
40
|
-
join(:description, :target => Photo, :type => :text, :join => { :from => :photo_container_id, :to => :id }, :prefix => "photo")
|
41
|
-
join(:
|
39
|
+
join(:caption, :target => 'Photo', :type => :string, :join => { :from => :photo_container_id, :to => :id })
|
40
|
+
join(:photo_rating, :target => 'Photo', :type => :trie_float, :join => { :from => :photo_container_id, :to => :id }, :as => 'average_rating_ft')
|
41
|
+
join(:caption, :target => 'Photo', :type => :text, :join => { :from => :photo_container_id, :to => :id })
|
42
|
+
join(:description, :target => 'Photo', :type => :text, :join => { :from => :photo_container_id, :to => :id }, :prefix => "photo")
|
43
|
+
join(:published, :target => 'Photo', :type => :boolean, :join => { :from => :photo_container_id, :to => :id }, :prefix => "photo")
|
44
|
+
join(:description, :target => 'Picture', :type => :text, :join => { :from => :photo_container_id, :to => :id }, :prefix => "picture")
|
45
|
+
join(:published, :target => 'Picture', :type => :boolean, :join => { :from => :photo_container_id, :to => :id }, :prefix => "picture")
|
42
46
|
end
|
data/spec/mocks/post.rb
CHANGED
@@ -37,7 +37,7 @@ end
|
|
37
37
|
|
38
38
|
Sunspot.setup(Post) do
|
39
39
|
text :title, :boost => 2
|
40
|
-
text :text_array
|
40
|
+
text :text_array do
|
41
41
|
[title, title]
|
42
42
|
end
|
43
43
|
text :body, :stored => true, :more_like_this => true
|
@@ -99,3 +99,37 @@ end
|
|
99
99
|
class PhotoPost < Post
|
100
100
|
end
|
101
101
|
|
102
|
+
class PostWithProcPrefixId < Post
|
103
|
+
end
|
104
|
+
|
105
|
+
Sunspot.setup(PostWithProcPrefixId) do
|
106
|
+
id_prefix { "USERDATA-#{id}!" }
|
107
|
+
string :title, :stored => true
|
108
|
+
boolean :featured, :using => :featured?, :stored => true
|
109
|
+
end
|
110
|
+
|
111
|
+
class PostWithSymbolPrefixId < Post
|
112
|
+
end
|
113
|
+
|
114
|
+
Sunspot.setup(PostWithSymbolPrefixId) do
|
115
|
+
id_prefix :title
|
116
|
+
string :title, :stored => true
|
117
|
+
boolean :featured, :using => :featured?, :stored => true
|
118
|
+
end
|
119
|
+
|
120
|
+
class PostWithStringPrefixId < Post
|
121
|
+
end
|
122
|
+
|
123
|
+
Sunspot.setup(PostWithStringPrefixId) do
|
124
|
+
id_prefix 'USERDATA!'
|
125
|
+
string :title, :stored => true
|
126
|
+
boolean :featured, :using => :featured?, :stored => true
|
127
|
+
end
|
128
|
+
|
129
|
+
class PostWithoutPrefixId < Post
|
130
|
+
end
|
131
|
+
|
132
|
+
Sunspot.setup(PostWithoutPrefixId) do
|
133
|
+
string :title, :stored => true
|
134
|
+
boolean :featured, :using => :featured?, :stored => true
|
135
|
+
end
|
data/sunspot.gemspec
CHANGED
@@ -20,8 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
can be performed without hand-writing any boolean queries or building Solr parameters by hand.
|
21
21
|
TEXT
|
22
22
|
|
23
|
-
s.rubyforge_project = "sunspot"
|
24
|
-
|
25
23
|
s.files = `git ls-files`.split("\n")
|
26
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
27
25
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sunspot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mat Brown
|
@@ -27,10 +27,10 @@ authors:
|
|
27
27
|
- Nicholas Jakobsen
|
28
28
|
- Bragadeesh J
|
29
29
|
- Ethiraj Srinivasan
|
30
|
-
autorequire:
|
30
|
+
autorequire:
|
31
31
|
bindir: bin
|
32
32
|
cert_chain: []
|
33
|
-
date:
|
33
|
+
date: 2022-05-30 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: rsolr
|
@@ -250,6 +250,7 @@ files:
|
|
250
250
|
- spec/api/indexer/spec_helper.rb
|
251
251
|
- spec/api/indexer_spec.rb
|
252
252
|
- spec/api/query/advanced_manipulation_examples.rb
|
253
|
+
- spec/api/query/connective_boost_examples.rb
|
253
254
|
- spec/api/query/connectives_examples.rb
|
254
255
|
- spec/api/query/dsl_spec.rb
|
255
256
|
- spec/api/query/dynamic_fields_examples.rb
|
@@ -289,6 +290,7 @@ files:
|
|
289
290
|
- spec/api/session_proxy/spec_helper.rb
|
290
291
|
- spec/api/session_proxy/thread_local_session_proxy_spec.rb
|
291
292
|
- spec/api/session_spec.rb
|
293
|
+
- spec/api/setup_spec.rb
|
292
294
|
- spec/api/spec_helper.rb
|
293
295
|
- spec/api/sunspot_spec.rb
|
294
296
|
- spec/ext.rb
|
@@ -336,7 +338,7 @@ homepage: http://outoftime.github.com/sunspot
|
|
336
338
|
licenses:
|
337
339
|
- MIT
|
338
340
|
metadata: {}
|
339
|
-
post_install_message:
|
341
|
+
post_install_message:
|
340
342
|
rdoc_options:
|
341
343
|
- "--webcvs=http://github.com/outoftime/sunspot/tree/master/%s"
|
342
344
|
- "--title"
|
@@ -356,8 +358,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
356
358
|
- !ruby/object:Gem::Version
|
357
359
|
version: '0'
|
358
360
|
requirements: []
|
359
|
-
rubygems_version: 3.
|
360
|
-
signing_key:
|
361
|
+
rubygems_version: 3.1.4
|
362
|
+
signing_key:
|
361
363
|
specification_version: 4
|
362
364
|
summary: Library for expressive, powerful interaction with the Solr search engine
|
363
365
|
test_files:
|
@@ -376,6 +378,7 @@ test_files:
|
|
376
378
|
- spec/api/indexer/spec_helper.rb
|
377
379
|
- spec/api/indexer_spec.rb
|
378
380
|
- spec/api/query/advanced_manipulation_examples.rb
|
381
|
+
- spec/api/query/connective_boost_examples.rb
|
379
382
|
- spec/api/query/connectives_examples.rb
|
380
383
|
- spec/api/query/dsl_spec.rb
|
381
384
|
- spec/api/query/dynamic_fields_examples.rb
|
@@ -415,6 +418,7 @@ test_files:
|
|
415
418
|
- spec/api/session_proxy/spec_helper.rb
|
416
419
|
- spec/api/session_proxy/thread_local_session_proxy_spec.rb
|
417
420
|
- spec/api/session_spec.rb
|
421
|
+
- spec/api/setup_spec.rb
|
418
422
|
- spec/api/spec_helper.rb
|
419
423
|
- spec/api/sunspot_spec.rb
|
420
424
|
- spec/ext.rb
|