solrb 0.1.7 → 0.1.8

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: 71788f83e115a345f449b9acb74eee56c3eb539a0b0a479277f1802616bec583
4
- data.tar.gz: b531dfec715fd83ea33ee2bf38591e2beddd672463e78b136534dbbc0f14c2a3
3
+ metadata.gz: f60f6a0571ce8fd909c4fd286f93ff5f57b6874597bc5980207eb97f6d43438f
4
+ data.tar.gz: df632f68830e1ffb178fd5dfcc757e8f2a11a397fdc3f49c8da112d0e076543b
5
5
  SHA512:
6
- metadata.gz: bb11372f134addee39b1fa7cb33ab9731aa1dee95658ba6e00697c199f085a358ed488b3238e56867bd00f90aa11d8e73b77a28137f18cde9010bbda4b5fbe0a
7
- data.tar.gz: 6f209b29887ecb55dd7e90cc96ebca989ba322fb6694a08e14464079a26df49a07330cad34312f75d0656d728ce2c9a46afd6aa64518a09efe92e3336fc1c620
6
+ metadata.gz: a363f5c19f5cbb71cdbd24bb1387f93c7c9b7003fb1dac1f1dd0d538052fe2f7f5de333ae4f8208d2533acbc53d92ee38e2d4ad975022ae6456f04c33b9cf01d
7
+ data.tar.gz: b3fd3713b0f78420ee9491bbc2ea930b3aed58885af7623cf7475efe703d477f200e903282473088bb78014fa98d6ad897c7a028a7b422016fd264bd582c3694
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.5.3
data/README.md CHANGED
@@ -219,6 +219,21 @@ end
219
219
  request.run(page: 1, page_size: 10)
220
220
  ```
221
221
 
222
+ Default sorting logic is following: nulls last, not-nulls first.
223
+
224
+ ```ruby
225
+ fields = [
226
+ Solr::Query::Request::FieldWithBoost.new(field: :name)
227
+ ]
228
+ sort_fields = [
229
+ Solr::Query::Request::Sorting::Field.new(name: :is_featured, direction: :desc),
230
+ Solr::Query::Request::Sorting::Function.new(function: "score desc")
231
+ ]
232
+ request = Solr::Query::Request.new(search_term: 'term', fields: fields)
233
+ request.sorting = Solr::Query::Request::Sorting.new(fields: sort_fields)
234
+ request.run(page: 1, page_size: 10)
235
+ ```
236
+
222
237
  ## Query with grouping
223
238
 
224
239
  ```ruby
@@ -8,6 +8,7 @@ require 'solr/query/request/grouping'
8
8
  require 'solr/query/request/boosting'
9
9
  require 'solr/query/request/spellcheck'
10
10
  require 'solr/query/request/sorting/field'
11
+ require 'solr/query/request/sorting/function'
11
12
  require 'solr/query/request/field_with_boost'
12
13
  require 'solr/query/request/or_filter'
13
14
  require 'solr/query/request/and_filter'
@@ -115,11 +115,7 @@ module Solr
115
115
 
116
116
  def add_sorting(solr_params)
117
117
  return solr_params if request.sorting.empty?
118
- # sorting nulls last, not-nulls first
119
- solr_sorting = request.sorting.fields.map do |sort_field|
120
- solr_field = solarize_field(sort_field.name)
121
- "exists(#{solr_field}) desc, #{solr_field} #{sort_field.direction}"
122
- end
118
+ solr_sorting = request.sorting.fields.map(&:to_solr_s).join(', ')
123
119
  solr_params.merge(sort: solr_sorting)
124
120
  end
125
121
 
@@ -3,12 +3,24 @@ module Solr
3
3
  class Request
4
4
  class Sorting
5
5
  class Field
6
+ include Solr::Support::SchemaHelper
7
+
6
8
  attr_reader :name, :direction
9
+
7
10
  def initialize(name:, direction:)
8
11
  @name = name
9
12
  @direction = direction
10
13
  freeze
11
14
  end
15
+
16
+ # sorting nulls last, not-nulls first
17
+ def to_solr_s
18
+ "exists(#{solr_field}) desc, #{solr_field} #{direction}"
19
+ end
20
+
21
+ def solr_field
22
+ solarize_field(name)
23
+ end
12
24
  end
13
25
  end
14
26
  end
@@ -0,0 +1,20 @@
1
+ module Solr
2
+ module Query
3
+ class Request
4
+ class Sorting
5
+ class Function
6
+ attr_reader :function
7
+
8
+ def initialize(function:)
9
+ @function = function
10
+ freeze
11
+ end
12
+
13
+ def to_solr_s
14
+ function
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
data/lib/solr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Solr
2
- VERSION = '0.1.7'.freeze
2
+ VERSION = '0.1.8'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adriano Luz
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2018-10-05 00:00:00.000000000 Z
13
+ date: 2018-11-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -217,6 +217,7 @@ files:
217
217
  - lib/solr/query/request/runner.rb
218
218
  - lib/solr/query/request/sorting.rb
219
219
  - lib/solr/query/request/sorting/field.rb
220
+ - lib/solr/query/request/sorting/function.rb
220
221
  - lib/solr/query/request/spellcheck.rb
221
222
  - lib/solr/query/response.rb
222
223
  - lib/solr/query/response/facet_value.rb