solrb 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![CircleCI](https://circleci.com/gh/machinio/solrb/tree/master.svg?style=svg)](https://circleci.com/gh/machinio/solrb/tree/master)
|
2
2
|
[![Maintainability](https://api.codeclimate.com/v1/badges/81e84c1c42f10f9da801/maintainability)](https://codeclimate.com/github/machinio/solrb/maintainability)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/solrb.svg)](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
|