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 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