sunspot 2.2.7 → 2.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/Appraisals +7 -0
- data/Gemfile +0 -8
- data/gemfiles/.gitkeep +0 -0
- data/lib/sunspot/dsl/scope.rb +6 -1
- data/lib/sunspot/field.rb +11 -0
- data/lib/sunspot/field_factory.rb +6 -2
- data/lib/sunspot/query/bbox.rb +5 -1
- data/lib/sunspot/query/restriction.rb +11 -0
- data/lib/sunspot/search/hit_enumerable.rb +4 -1
- data/lib/sunspot/search/standard_search.rb +2 -3
- data/lib/sunspot/version.rb +1 -1
- data/spec/api/adapters_spec.rb +19 -19
- data/spec/api/batcher_spec.rb +15 -15
- data/spec/api/binding_spec.rb +3 -3
- data/spec/api/class_set_spec.rb +3 -3
- data/spec/api/hit_enumerable_spec.rb +32 -9
- data/spec/api/indexer/attributes_spec.rb +31 -31
- data/spec/api/indexer/batch_spec.rb +8 -7
- data/spec/api/indexer/dynamic_fields_spec.rb +8 -8
- data/spec/api/indexer/fixed_fields_spec.rb +12 -12
- data/spec/api/indexer/fulltext_spec.rb +8 -8
- data/spec/api/indexer/removal_spec.rb +14 -14
- data/spec/api/indexer_spec.rb +2 -2
- data/spec/api/query/advanced_manipulation_examples.rb +3 -3
- data/spec/api/query/connectives_examples.rb +26 -14
- data/spec/api/query/dsl_spec.rb +17 -9
- data/spec/api/query/dynamic_fields_examples.rb +18 -18
- data/spec/api/query/faceting_examples.rb +62 -62
- data/spec/api/query/fulltext_examples.rb +56 -55
- data/spec/api/query/function_spec.rb +26 -26
- data/spec/api/query/geo_examples.rb +6 -6
- data/spec/api/query/group_spec.rb +6 -6
- data/spec/api/query/highlighting_examples.rb +26 -26
- data/spec/api/query/join_spec.rb +2 -2
- data/spec/api/query/more_like_this_spec.rb +29 -29
- data/spec/api/query/ordering_pagination_examples.rb +25 -25
- data/spec/api/query/scope_examples.rb +39 -39
- data/spec/api/query/spatial_examples.rb +3 -3
- data/spec/api/query/spellcheck_examples.rb +3 -3
- data/spec/api/query/standard_spec.rb +1 -1
- data/spec/api/query/stats_examples.rb +8 -8
- data/spec/api/query/text_field_scoping_examples.rb +5 -5
- data/spec/api/query/types_spec.rb +4 -4
- data/spec/api/search/cursor_paginated_collection_spec.rb +12 -12
- data/spec/api/search/dynamic_fields_spec.rb +4 -4
- data/spec/api/search/faceting_spec.rb +55 -52
- data/spec/api/search/highlighting_spec.rb +7 -7
- data/spec/api/search/hits_spec.rb +29 -29
- data/spec/api/search/paginated_collection_spec.rb +18 -18
- data/spec/api/search/results_spec.rb +13 -13
- data/spec/api/search/search_spec.rb +3 -3
- data/spec/api/search/stats_spec.rb +10 -10
- data/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +19 -18
- data/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +9 -9
- data/spec/api/session_proxy/master_slave_session_proxy_spec.rb +10 -6
- data/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +10 -10
- data/spec/api/session_proxy/sharding_session_proxy_spec.rb +14 -13
- data/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +2 -2
- data/spec/api/session_proxy/spec_helper.rb +1 -1
- data/spec/api/session_proxy/thread_local_session_proxy_spec.rb +9 -5
- data/spec/api/session_spec.rb +42 -42
- data/spec/api/sunspot_spec.rb +4 -4
- data/spec/integration/atomic_updates_spec.rb +25 -11
- data/spec/integration/dynamic_fields_spec.rb +10 -10
- data/spec/integration/faceting_spec.rb +39 -39
- data/spec/integration/field_grouping_spec.rb +16 -16
- data/spec/integration/field_lists_spec.rb +41 -0
- data/spec/integration/geospatial_spec.rb +19 -8
- data/spec/integration/highlighting_spec.rb +5 -5
- data/spec/integration/indexing_spec.rb +5 -5
- data/spec/integration/keyword_search_spec.rb +47 -45
- data/spec/integration/local_search_spec.rb +4 -4
- data/spec/integration/more_like_this_spec.rb +7 -7
- data/spec/integration/scoped_search_spec.rb +107 -107
- data/spec/integration/spellcheck_spec.rb +52 -7
- data/spec/integration/stats_spec.rb +10 -10
- data/spec/integration/stored_fields_spec.rb +1 -1
- data/spec/integration/test_pagination.rb +4 -4
- data/spec/integration/unicode_spec.rb +1 -1
- data/spec/mocks/post.rb +5 -1
- data/spec/spec_helper.rb +11 -6
- data/sunspot.gemspec +3 -1
- metadata +40 -7
@@ -21,7 +21,7 @@ describe 'spellcheck' do
|
|
21
21
|
search = Sunspot.search(Post) do
|
22
22
|
keywords 'Closure'
|
23
23
|
end
|
24
|
-
search.spellcheck_suggestions.
|
24
|
+
expect(search.spellcheck_suggestions).to eq({})
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'returns the list of suggestions' do
|
@@ -29,9 +29,9 @@ describe 'spellcheck' do
|
|
29
29
|
keywords 'Closure'
|
30
30
|
spellcheck :count => 3
|
31
31
|
end
|
32
|
-
search.spellcheck_suggestions['closure']['suggestion'].
|
32
|
+
expect(search.spellcheck_suggestions['closure']['suggestion']).to eq([
|
33
33
|
{'word'=>'clojure', 'freq'=>2}, {'word'=>'conjure', 'freq'=>1}
|
34
|
-
]
|
34
|
+
])
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'returns suggestion with highest frequency' do
|
@@ -39,7 +39,7 @@ describe 'spellcheck' do
|
|
39
39
|
keywords 'Closure'
|
40
40
|
spellcheck :count => 3
|
41
41
|
end
|
42
|
-
search.spellcheck_suggestion_for('closure').
|
42
|
+
expect(search.spellcheck_suggestion_for('closure')).to eq('clojure')
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'returns suggestion without collation when only more popular is true' do
|
@@ -48,7 +48,7 @@ describe 'spellcheck' do
|
|
48
48
|
spellcheck :count => 3, :only_more_popular => true, :collate => false
|
49
49
|
end
|
50
50
|
|
51
|
-
search.spellcheck_suggestion_for('closure').
|
51
|
+
expect(search.spellcheck_suggestion_for('closure')).to eq('clojure')
|
52
52
|
end
|
53
53
|
|
54
54
|
context 'spellcheck collation' do
|
@@ -58,7 +58,7 @@ describe 'spellcheck' do
|
|
58
58
|
keywords 'lojure developing'
|
59
59
|
spellcheck :count => 3, :only_more_popular => true
|
60
60
|
end
|
61
|
-
search.spellcheck_collation('lojure', 'developing').
|
61
|
+
expect(search.spellcheck_collation('lojure', 'developing')).to eq('clojure developing')
|
62
62
|
end
|
63
63
|
|
64
64
|
it 'returns Solr collation if terms are not provided' do
|
@@ -67,7 +67,52 @@ describe 'spellcheck' do
|
|
67
67
|
keywords 'lojure developing'
|
68
68
|
spellcheck :count => 3, :only_more_popular => true
|
69
69
|
end
|
70
|
-
search.spellcheck_collation.
|
70
|
+
expect(search.spellcheck_collation).to eq('clojure developer')
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'returns Solr collation if terms are not provided even for single word' do
|
74
|
+
|
75
|
+
search = Sunspot.search(Post) do
|
76
|
+
keywords 'lojure'
|
77
|
+
spellcheck :count => 3, :only_more_popular => true
|
78
|
+
end
|
79
|
+
expect(search.spellcheck_collation).to eq('clojure')
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'returns Solr collation if terms are provided even for single word' do
|
83
|
+
|
84
|
+
search = Sunspot.search(Post) do
|
85
|
+
keywords 'lojure'
|
86
|
+
spellcheck :count => 3
|
87
|
+
end
|
88
|
+
expect(search.spellcheck_collation).to eq('clojure')
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'returns Solr collation if terms are provided even for single word' do
|
92
|
+
|
93
|
+
search = Sunspot.search(Post) do
|
94
|
+
keywords 'lojure'
|
95
|
+
spellcheck :count => 3
|
96
|
+
end
|
97
|
+
expect(search.spellcheck_collation('lojure')).to eq('clojure')
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'returns Solr collation if terms are provided even if single keyword is word' do
|
101
|
+
|
102
|
+
search = Sunspot.search(Post) do
|
103
|
+
keywords 'C++, lojure Developer'
|
104
|
+
spellcheck :count => 3
|
105
|
+
end
|
106
|
+
expect(search.spellcheck_collation).to eq('C++, clojure Developer')
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'returns nil if terms are provided which varies from actual keywords' do
|
110
|
+
|
111
|
+
search = Sunspot.search(Post) do
|
112
|
+
keywords 'clojure'
|
113
|
+
spellcheck :count => 3
|
114
|
+
end
|
115
|
+
expect(search.spellcheck_collation('lojure')).to eq(nil)
|
71
116
|
end
|
72
117
|
end
|
73
118
|
|
@@ -10,38 +10,38 @@ describe 'search stats' do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'returns minimum stats' do
|
13
|
-
Sunspot.search(Post) do
|
13
|
+
expect(Sunspot.search(Post) do
|
14
14
|
stats :average_rating
|
15
|
-
end.stats(:average_rating).min.
|
15
|
+
end.stats(:average_rating).min).to eq(3.0)
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'returns maximum stats' do
|
19
|
-
Sunspot.search(Post) do
|
19
|
+
expect(Sunspot.search(Post) do
|
20
20
|
stats :average_rating
|
21
|
-
end.stats(:average_rating).max.
|
21
|
+
end.stats(:average_rating).max).to eq(4.0)
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'returns count stats' do
|
25
|
-
Sunspot.search(Post) do
|
25
|
+
expect(Sunspot.search(Post) do
|
26
26
|
stats :average_rating
|
27
|
-
end.stats(:average_rating).count.
|
27
|
+
end.stats(:average_rating).count).to eq(3)
|
28
28
|
end
|
29
29
|
|
30
30
|
describe 'facets' do
|
31
31
|
it 'returns minimum on facet row with two blog ids' do
|
32
|
-
Sunspot.search(Post) do
|
32
|
+
expect(Sunspot.search(Post) do
|
33
33
|
stats :average_rating do
|
34
34
|
facet :blog_id
|
35
35
|
end
|
36
|
-
end.stats(:average_rating).facet(:blog_id).rows[1].min.
|
36
|
+
end.stats(:average_rating).facet(:blog_id).rows[1].min).to eq(3.0)
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'returns maximum on facet row with two blog ids' do
|
40
|
-
Sunspot.search(Post) do
|
40
|
+
expect(Sunspot.search(Post) do
|
41
41
|
stats :average_rating do
|
42
42
|
facet :blog_id
|
43
43
|
end
|
44
|
-
end.stats(:average_rating).facet(:blog_id).rows[1].max.
|
44
|
+
end.stats(:average_rating).facet(:blog_id).rows[1].max).to eq(4.0)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -11,7 +11,7 @@ describe 'pagination' do
|
|
11
11
|
|
12
12
|
it 'should return all by default' do
|
13
13
|
results = Sunspot.search(Post) { order_by :blog_id }.results
|
14
|
-
results.
|
14
|
+
expect(results).to eq(@posts)
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should return first page of 10' do
|
@@ -19,7 +19,7 @@ describe 'pagination' do
|
|
19
19
|
order_by :blog_id
|
20
20
|
paginate :page => 1, :per_page => 10
|
21
21
|
end.results
|
22
|
-
results.
|
22
|
+
expect(results).to eq(@posts[0,10])
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'should return second page of 10' do
|
@@ -27,7 +27,7 @@ describe 'pagination' do
|
|
27
27
|
order_by :blog_id
|
28
28
|
paginate :page => 2, :per_page => 10
|
29
29
|
end.results
|
30
|
-
results.
|
30
|
+
expect(results).to eq(@posts[10,10])
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should return pages with offsets' do
|
@@ -38,6 +38,6 @@ describe 'pagination' do
|
|
38
38
|
|
39
39
|
# page 1 is 3, 4, 5, 6, 7
|
40
40
|
# page 2 is 8, 9, 10, 11, 12
|
41
|
-
results.
|
41
|
+
expect(results).to eq(@posts[8,5])
|
42
42
|
end
|
43
43
|
end
|
data/spec/mocks/post.rb
CHANGED
@@ -85,7 +85,11 @@ Sunspot.setup(Post) do
|
|
85
85
|
|
86
86
|
string :legacy_array, :as => :legacy_array_field_sm, :multiple => true do
|
87
87
|
['first string', 'second string']
|
88
|
-
|
88
|
+
end
|
89
|
+
|
90
|
+
string :tag_list, :multiple => true, :stored => true do
|
91
|
+
tags
|
92
|
+
end
|
89
93
|
end
|
90
94
|
|
91
95
|
class PhotoPost < Post
|
data/spec/spec_helper.rb
CHANGED
@@ -13,27 +13,32 @@ end
|
|
13
13
|
require File.join(File.dirname(__FILE__), 'ext')
|
14
14
|
|
15
15
|
RSpec.configure do |config|
|
16
|
-
|
17
|
-
config.filter_run :focus => true
|
16
|
+
config.filter_run :focus
|
18
17
|
config.run_all_when_everything_filtered = true
|
19
18
|
|
19
|
+
# Run specs in random order to surface order dependencies. If you find an
|
20
|
+
# order dependency and want to debug it, you can fix the order by providing
|
21
|
+
# the seed, which is printed after each run.
|
22
|
+
# --seed 1234
|
23
|
+
config.order = 'random'
|
24
|
+
|
20
25
|
# Mock session available to all spec/api tests
|
21
26
|
config.include MockSessionHelper,
|
22
27
|
:type => :api,
|
23
|
-
:
|
28
|
+
:file_path => /spec[\\\/]api/
|
24
29
|
|
25
30
|
# Real Solr instance is available to integration tests
|
26
31
|
config.include IntegrationHelper,
|
27
32
|
:type => :integration,
|
28
|
-
:
|
33
|
+
:file_path => /spec[\\\/]integration/
|
29
34
|
|
30
35
|
# Nested under spec/api
|
31
36
|
[:indexer, :query, :search].each do |spec_type|
|
32
37
|
helper_name = "#{spec_type}_helper"
|
33
38
|
|
34
39
|
config.include Sunspot::Util.full_const_get(Sunspot::Util.camel_case(helper_name)),
|
35
|
-
:type
|
36
|
-
:
|
40
|
+
:type => spec_type,
|
41
|
+
:file_path => /spec[\\\/]api[\\\/]#{spec_type}/
|
37
42
|
end
|
38
43
|
end
|
39
44
|
|
data/sunspot.gemspec
CHANGED
@@ -30,7 +30,9 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_dependency 'rsolr', '>= 1.1.1', '< 3'
|
31
31
|
s.add_dependency 'pr_geohash', '~>1.0'
|
32
32
|
|
33
|
-
s.add_development_dependency '
|
33
|
+
s.add_development_dependency 'rake', '< 12.3'
|
34
|
+
s.add_development_dependency 'rspec'
|
35
|
+
s.add_development_dependency 'appraisal', '2.2.0'
|
34
36
|
|
35
37
|
s.rdoc_options << '--webcvs=http://github.com/outoftime/sunspot/tree/master/%s' <<
|
36
38
|
'--title' << 'Sunspot - Solr-powered search for Ruby objects - API Documentation' <<
|
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.2.
|
4
|
+
version: 2.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mat Brown
|
@@ -30,7 +30,7 @@ authors:
|
|
30
30
|
autorequire:
|
31
31
|
bindir: bin
|
32
32
|
cert_chain: []
|
33
|
-
date:
|
33
|
+
date: 2018-03-26 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: rsolr
|
@@ -66,20 +66,48 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "<"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '12.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '12.3'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: appraisal
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 2.2.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.
|
110
|
+
version: 2.2.0
|
83
111
|
description: |2
|
84
112
|
Sunspot is a library providing a powerful, all-ruby API for the Solr search engine. Sunspot manages the configuration of persistent
|
85
113
|
Ruby classes for search and indexing and exposes Solr's most powerful features through a collection of DSLs. Complex search operations
|
@@ -91,11 +119,14 @@ extensions: []
|
|
91
119
|
extra_rdoc_files: []
|
92
120
|
files:
|
93
121
|
- ".gitignore"
|
122
|
+
- ".rspec"
|
123
|
+
- Appraisals
|
94
124
|
- Gemfile
|
95
125
|
- History.txt
|
96
126
|
- LICENSE
|
97
127
|
- Rakefile
|
98
128
|
- TODO
|
129
|
+
- gemfiles/.gitkeep
|
99
130
|
- lib/light_config.rb
|
100
131
|
- lib/sunspot.rb
|
101
132
|
- lib/sunspot/adapters.rb
|
@@ -262,6 +293,7 @@ files:
|
|
262
293
|
- spec/integration/dynamic_fields_spec.rb
|
263
294
|
- spec/integration/faceting_spec.rb
|
264
295
|
- spec/integration/field_grouping_spec.rb
|
296
|
+
- spec/integration/field_lists_spec.rb
|
265
297
|
- spec/integration/geospatial_spec.rb
|
266
298
|
- spec/integration/highlighting_spec.rb
|
267
299
|
- spec/integration/indexing_spec.rb
|
@@ -316,7 +348,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
348
|
version: '0'
|
317
349
|
requirements: []
|
318
350
|
rubyforge_project: sunspot
|
319
|
-
rubygems_version: 2.
|
351
|
+
rubygems_version: 2.6.13
|
320
352
|
signing_key:
|
321
353
|
specification_version: 4
|
322
354
|
summary: Library for expressive, powerful interaction with the Solr search engine
|
@@ -386,6 +418,7 @@ test_files:
|
|
386
418
|
- spec/integration/dynamic_fields_spec.rb
|
387
419
|
- spec/integration/faceting_spec.rb
|
388
420
|
- spec/integration/field_grouping_spec.rb
|
421
|
+
- spec/integration/field_lists_spec.rb
|
389
422
|
- spec/integration/geospatial_spec.rb
|
390
423
|
- spec/integration/highlighting_spec.rb
|
391
424
|
- spec/integration/indexing_spec.rb
|