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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b1a4e86c8d3d832b6dd104a1474572142853b9beeee194cccd5de280165a78b
4
- data.tar.gz: 8c80eec04d5d0733ac7671e49f3bcaf5f9886d7cd0a62453ebde3b147b9931ad
3
+ metadata.gz: 71788f83e115a345f449b9acb74eee56c3eb539a0b0a479277f1802616bec583
4
+ data.tar.gz: b531dfec715fd83ea33ee2bf38591e2beddd672463e78b136534dbbc0f14c2a3
5
5
  SHA512:
6
- metadata.gz: ae8d3cdf4df2a9979e20686460039f9f2d7df4d8c6ba9132b9a82de8f3ccef999d65229ab7eeb6bacb4333005c3886e6dbf906fdcf86682fabc0119c64f4e72d
7
- data.tar.gz: 761e6862887e1c61fbd3b9a432b89e8ce540b957e40a9b1566cc5fd065fe8391abe7822d18a7296395ec82797b1ffac1fd44cb372b1643a23ad8561ebd84b920
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 { |f| "#{f.solr_field}:(#{f.solr_value})" }
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
 
@@ -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
- attr_reader :last_solr_request_params, :last_solr_response
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::Testing.subscribe_to_events
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
@@ -1,3 +1,3 @@
1
1
  module Solr
2
- VERSION = '0.1.6'.freeze
2
+ VERSION = '0.1.7'.freeze
3
3
  end
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.6
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-09-26 00:00:00.000000000 Z
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