solrb 0.1.6 → 0.1.7
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/README.md +39 -1
- data/lib/solr/query/request/and_filter.rb +18 -0
- data/lib/solr/query/request/or_filter.rb +3 -1
- data/lib/solr/query/request/runner.rb +0 -3
- data/lib/solr/query/request.rb +1 -0
- data/lib/solr/testing.rb +12 -12
- data/lib/solr/version.rb +1 -1
- data/solrb.gemspec +2 -2
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71788f83e115a345f449b9acb74eee56c3eb539a0b0a479277f1802616bec583
|
4
|
+
data.tar.gz: b531dfec715fd83ea33ee2bf38591e2beddd672463e78b136534dbbc0f14c2a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb11372f134addee39b1fa7cb33ab9731aa1dee95658ba6e00697c199f085a358ed488b3238e56867bd00f90aa11d8e73b77a28137f18cde9010bbda4b5fbe0a
|
7
|
+
data.tar.gz: 6f209b29887ecb55dd7e90cc96ebca989ba322fb6694a08e14464079a26df49a07330cad34312f75d0656d728ce2c9a46afd6aa64518a09efe92e3336fc1c620
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
[](https://circleci.com/gh/machinio/solrb/tree/master)
|
2
2
|
[](https://codeclimate.com/github/machinio/solrb/maintainability)
|
3
|
+
[](https://badge.fury.io/rb/solrb)
|
3
4
|
|
4
5
|
Solrb
|
5
6
|
======
|
@@ -29,6 +30,7 @@ Installation: `gem install solrb`
|
|
29
30
|
* [Field list](#field-list)
|
30
31
|
* [Deleting documents](#deleting-documents)
|
31
32
|
* [Active Support instrumentation](#active-support-instrumentation)
|
33
|
+
* [Testing](#running-specs)
|
32
34
|
* [Running specs](#running-specs)
|
33
35
|
|
34
36
|
|
@@ -185,6 +187,24 @@ end
|
|
185
187
|
request.run(page: 1, page_size: 10)
|
186
188
|
```
|
187
189
|
|
190
|
+
### AND and OR filters
|
191
|
+
|
192
|
+
```ruby
|
193
|
+
usa_filter =
|
194
|
+
Solr::Query::Request::AndFilter.new(
|
195
|
+
Solr::Query::Request::Filter.new(type: :equal, field: :contry, value: 'USA'),
|
196
|
+
Solr::Query::Request::Filter.new(type: :equal, field: :region, value: 'Idaho')
|
197
|
+
)
|
198
|
+
canada_filter =
|
199
|
+
Solr::Query::Request::AndFilter.new(
|
200
|
+
Solr::Query::Request::Filter.new(type: :equal, field: :contry, value: 'Canada'),
|
201
|
+
Solr::Query::Request::Filter.new(type: :equal, field: :region, value: 'Alberta')
|
202
|
+
)
|
203
|
+
|
204
|
+
location_filters = Solr::Query::Request::OrFilter.new(usa_filter, canada_filter)
|
205
|
+
request = Solr::Query::Request.new(search_term: 'term', filters: location_filters)
|
206
|
+
request.run(page: 1, page_size: 10)
|
207
|
+
```
|
188
208
|
|
189
209
|
## Query with sorting
|
190
210
|
|
@@ -258,7 +278,7 @@ Example of usage:
|
|
258
278
|
category_id_boosts = {3025 => 2.0, 3024 => 1.5, 3023 => 1.2}
|
259
279
|
request.boosting = Solr::Query::Request::Boosting.new(
|
260
280
|
multiplicative_boost_functions: [
|
261
|
-
Solr::Query::Request::Boosting::DictionaryBoostFunction.new(field: :category_id,
|
281
|
+
Solr::Query::Request::Boosting::DictionaryBoostFunction.new(field: :category_id,
|
262
282
|
dictionary: category_id_boosts)
|
263
283
|
]
|
264
284
|
)
|
@@ -305,6 +325,24 @@ ActiveSupport::Notifications.subscribe('request.solrb') do |*args|
|
|
305
325
|
end
|
306
326
|
```
|
307
327
|
|
328
|
+
# Testing
|
329
|
+
|
330
|
+
It's possible to inspect the parameters for each solr query request done using Solrb by requiring
|
331
|
+
`solr/testing` file in your test suite. The query parameters will be accessible by reading
|
332
|
+
`Solr::Testing.last_solr_request_params` after each request.
|
333
|
+
|
334
|
+
```ruby
|
335
|
+
require 'solr/testing'
|
336
|
+
|
337
|
+
RSpec.describe MyTest do
|
338
|
+
let(:query) { Solr::Query::Request.new(search_term: 'Solrb') }
|
339
|
+
it 'returns the last solr request params' do
|
340
|
+
query.run(page: 1, page_size: 10)
|
341
|
+
expect(Solr::Testing.last_solr_request_params).to eq({ ... })
|
342
|
+
end
|
343
|
+
end
|
344
|
+
```
|
345
|
+
|
308
346
|
|
309
347
|
|
310
348
|
# Running specs
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Solr
|
2
|
+
module Query
|
3
|
+
class Request
|
4
|
+
class AndFilter
|
5
|
+
attr_reader :filters
|
6
|
+
|
7
|
+
def initialize(*filters)
|
8
|
+
@filters = filters
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_solr_s
|
12
|
+
subexpressions = @filters.map(&:to_solr_s)
|
13
|
+
"(#{subexpressions.join(' AND ')})"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -2,12 +2,14 @@ module Solr
|
|
2
2
|
module Query
|
3
3
|
class Request
|
4
4
|
class OrFilter
|
5
|
+
attr_reader :filters
|
6
|
+
|
5
7
|
def initialize(*filters)
|
6
8
|
@filters = filters
|
7
9
|
end
|
8
10
|
|
9
11
|
def to_solr_s
|
10
|
-
subexpressions = @filters.map
|
12
|
+
subexpressions = @filters.map(&:to_solr_s)
|
11
13
|
"(#{subexpressions.join(' OR ')})"
|
12
14
|
end
|
13
15
|
end
|
@@ -23,9 +23,6 @@ module Solr
|
|
23
23
|
def run
|
24
24
|
raw_response = connection(PATH).post_as_json(request_params)
|
25
25
|
response = Solr::Response.from_raw_response(raw_response)
|
26
|
-
# TODO: need to remove that later
|
27
|
-
Solr.instrument(name: '__testing_request_response.solrb',
|
28
|
-
data: { request: request_params, response: raw_response })
|
29
26
|
response
|
30
27
|
end
|
31
28
|
|
data/lib/solr/query/request.rb
CHANGED
@@ -10,6 +10,7 @@ require 'solr/query/request/spellcheck'
|
|
10
10
|
require 'solr/query/request/sorting/field'
|
11
11
|
require 'solr/query/request/field_with_boost'
|
12
12
|
require 'solr/query/request/or_filter'
|
13
|
+
require 'solr/query/request/and_filter'
|
13
14
|
require 'solr/query/request/runner'
|
14
15
|
require 'solr/query/response'
|
15
16
|
require 'solr/errors/solr_query_error'
|
data/lib/solr/testing.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
module Solr
|
2
2
|
module Testing
|
3
3
|
class << self
|
4
|
-
|
5
|
-
|
6
|
-
def subscribe_to_events
|
7
|
-
if defined? ActiveSupport::Notifications
|
8
|
-
ActiveSupport::Notifications.subscribe('__testing_request_response.solrb') do |*args|
|
9
|
-
event = ActiveSupport::Notifications::Event.new(*args)
|
10
|
-
@last_solr_request_params = event.payload.dig(:request, :params)
|
11
|
-
@last_solr_response = event.payload[:response]
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
4
|
+
attr_accessor :last_solr_request_params
|
15
5
|
end
|
16
6
|
end
|
17
7
|
end
|
18
8
|
|
19
|
-
Solr::
|
9
|
+
module Solr::Query::Request::RunnerExtension
|
10
|
+
def run
|
11
|
+
response = super
|
12
|
+
Solr::Testing.last_solr_request_params = request_params[:params]
|
13
|
+
response
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Solr::Query::Request::Runner
|
18
|
+
prepend Solr::Query::Request::RunnerExtension
|
19
|
+
end
|
data/lib/solr/version.rb
CHANGED
data/solrb.gemspec
CHANGED
@@ -5,8 +5,8 @@ require 'solr/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'solrb'
|
7
7
|
spec.version = Solr::VERSION
|
8
|
-
spec.authors = ['Adriano Luz', 'Valentin Vasilyev']
|
9
|
-
spec.email = ['adriano.luz@machinio.com', 'valentin@machinio.com']
|
8
|
+
spec.authors = ['Adriano Luz', 'Valentin Vasilyev', 'Vladislav Syabruk']
|
9
|
+
spec.email = ['adriano.luz@machinio.com', 'valentin@machinio.com', 'vladislav.syabruk@machinio.com']
|
10
10
|
|
11
11
|
spec.summary = 'Solr Ruby client with a nice object-oriented API'
|
12
12
|
spec.homepage = 'https://github.com/machinio/solrb'
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adriano Luz
|
8
8
|
- Valentin Vasilyev
|
9
|
+
- Vladislav Syabruk
|
9
10
|
autorequire:
|
10
11
|
bindir: exe
|
11
12
|
cert_chain: []
|
12
|
-
date: 2018-
|
13
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: addressable
|
@@ -155,6 +156,7 @@ description:
|
|
155
156
|
email:
|
156
157
|
- adriano.luz@machinio.com
|
157
158
|
- valentin@machinio.com
|
159
|
+
- vladislav.syabruk@machinio.com
|
158
160
|
executables: []
|
159
161
|
extensions: []
|
160
162
|
extra_rdoc_files: []
|
@@ -190,6 +192,7 @@ files:
|
|
190
192
|
- lib/solr/indexing/document.rb
|
191
193
|
- lib/solr/indexing/request.rb
|
192
194
|
- lib/solr/query/request.rb
|
195
|
+
- lib/solr/query/request/and_filter.rb
|
193
196
|
- lib/solr/query/request/boost_magnitude.rb
|
194
197
|
- lib/solr/query/request/boosting.rb
|
195
198
|
- lib/solr/query/request/boosting/dictionary_boost_function.rb
|