chewy 7.3.5 → 7.3.6
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/CHANGELOG.md +10 -0
- data/lib/chewy/search/parameters/knn.rb +16 -0
- data/lib/chewy/search/request.rb +14 -3
- data/lib/chewy/version.rb +1 -1
- data/spec/chewy/search/parameters/knn_spec.rb +5 -0
- data/spec/chewy/search/request_spec.rb +9 -7
- 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: e5405b97585dccb630ef95340245a390ff7ffe19a1a27e57a35b4f4d6844e2e0
|
4
|
+
data.tar.gz: 91570a2fd199d511bf40caf473d8000504cae38a4bb4b68c6f767913033f7234
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8441a05d5a3c55834f7380a1e10b3acb4f01f17b6cafc45e3ccead13f0d7c2a6485447c2bc8461ae5c91b37b36c4d57f140f76cb993ca63777195d64237d8432
|
7
|
+
data.tar.gz: 3571db3d5fa632d6ee9c10105578ca8f805090e375372f1ad98a192dca440536f27559be2439d7e75c8ab833f596fc61758d464696ec4ee47942ff29fbffa6d5
|
data/CHANGELOG.md
CHANGED
@@ -8,6 +8,16 @@
|
|
8
8
|
|
9
9
|
### Bugs Fixed
|
10
10
|
|
11
|
+
## 7.3.5 (2023-12-13)
|
12
|
+
|
13
|
+
### New Features
|
14
|
+
|
15
|
+
* [#890](https://github.com/toptal/chewy/pull/890): Add the [`knn`](https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html) option to the request. ([@jkostolansky][])
|
16
|
+
|
17
|
+
### Changes
|
18
|
+
|
19
|
+
### Bugs Fixed
|
20
|
+
|
11
21
|
## 7.3.5 (2023-12-06)
|
12
22
|
|
13
23
|
### New Features
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'chewy/search/parameters/storage'
|
2
|
+
|
3
|
+
module Chewy
|
4
|
+
module Search
|
5
|
+
class Parameters
|
6
|
+
# Just a standard hash storage. Nothing to see here.
|
7
|
+
#
|
8
|
+
# @see Chewy::Search::Parameters::HashStorage
|
9
|
+
# @see Chewy::Search::Request#knn
|
10
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html
|
11
|
+
class Knn < Storage
|
12
|
+
include HashStorage
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/chewy/search/request.rb
CHANGED
@@ -20,7 +20,7 @@ module Chewy
|
|
20
20
|
UNDEFINED = Class.new.freeze
|
21
21
|
EVERFIELDS = %w[_index _type _id _parent _routing].freeze
|
22
22
|
DELEGATED_METHODS = %i[
|
23
|
-
query filter post_filter order reorder docvalue_fields
|
23
|
+
query filter post_filter knn order reorder docvalue_fields
|
24
24
|
track_scores track_total_hits request_cache explain version profile
|
25
25
|
search_type preference limit offset terminate_after
|
26
26
|
timeout min_score source stored_fields search_after
|
@@ -41,7 +41,7 @@ module Chewy
|
|
41
41
|
EXTRA_STORAGES = %i[aggs suggest].freeze
|
42
42
|
# An array of storage names that are changing the returned hist collection in any way.
|
43
43
|
WHERE_STORAGES = %i[
|
44
|
-
query filter post_filter none min_score rescore indices_boost collapse
|
44
|
+
query filter post_filter knn none min_score rescore indices_boost collapse
|
45
45
|
].freeze
|
46
46
|
|
47
47
|
delegate :hits, :wrappers, :objects, :records, :documents,
|
@@ -520,7 +520,18 @@ module Chewy
|
|
520
520
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/collapse-search-results.html
|
521
521
|
# @param value [Hash]
|
522
522
|
# @return [Chewy::Search::Request]
|
523
|
-
|
523
|
+
#
|
524
|
+
# @!method knn(value)
|
525
|
+
# Replaces the value of the `knn` request part.
|
526
|
+
#
|
527
|
+
# @example
|
528
|
+
# PlacesIndex.knn(field: :vector, query_vector: [4, 2], k: 5, num_candidates: 50)
|
529
|
+
# # => <PlacesIndex::Query {..., :body=>{:knn=>{"field"=>:vector, "query_vector"=>[4, 2], "k"=>5, "num_candidates"=>50}}}>
|
530
|
+
# @see Chewy::Search::Parameters::Knn
|
531
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html
|
532
|
+
# @param value [Hash]
|
533
|
+
# @return [Chewy::Search::Request]
|
534
|
+
%i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name|
|
524
535
|
define_method name do |value|
|
525
536
|
modify(name) { replace!(value) }
|
526
537
|
end
|
data/lib/chewy/version.rb
CHANGED
@@ -314,14 +314,16 @@ describe Chewy::Search::Request do
|
|
314
314
|
end
|
315
315
|
end
|
316
316
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
.
|
317
|
+
%i[collapse knn].each do |name|
|
318
|
+
describe "##{name}" do
|
319
|
+
specify { expect(subject.send(name, foo: {bar: 42}).render[:body]).to include(name => {'foo' => {bar: 42}}) }
|
320
|
+
specify do
|
321
|
+
expect(subject.send(name, foo: {bar: 42}).send(name, moo: {baz: 43}).render[:body])
|
322
|
+
.to include(name => {'moo' => {baz: 43}})
|
323
|
+
end
|
324
|
+
specify { expect(subject.send(name, foo: {bar: 42}).send(name, nil).render[:body]).to be_blank }
|
325
|
+
specify { expect { subject.send(name, foo: {bar: 42}) }.not_to change { subject.render } }
|
322
326
|
end
|
323
|
-
specify { expect(subject.collapse(foo: {bar: 42}).collapse(nil).render[:body]).to be_blank }
|
324
|
-
specify { expect { subject.collapse(foo: {bar: 42}) }.not_to change { subject.render } }
|
325
327
|
end
|
326
328
|
|
327
329
|
describe '#docvalue_fields' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chewy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.3.
|
4
|
+
version: 7.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toptal, LLC
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-12-
|
12
|
+
date: 2023-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: database_cleaner
|
@@ -324,6 +324,7 @@ files:
|
|
324
324
|
- lib/chewy/search/parameters/ignore_unavailable.rb
|
325
325
|
- lib/chewy/search/parameters/indices.rb
|
326
326
|
- lib/chewy/search/parameters/indices_boost.rb
|
327
|
+
- lib/chewy/search/parameters/knn.rb
|
327
328
|
- lib/chewy/search/parameters/limit.rb
|
328
329
|
- lib/chewy/search/parameters/load.rb
|
329
330
|
- lib/chewy/search/parameters/min_score.rb
|
@@ -419,6 +420,7 @@ files:
|
|
419
420
|
- spec/chewy/search/parameters/ignore_unavailable_spec.rb
|
420
421
|
- spec/chewy/search/parameters/indices_spec.rb
|
421
422
|
- spec/chewy/search/parameters/integer_storage_examples.rb
|
423
|
+
- spec/chewy/search/parameters/knn_spec.rb
|
422
424
|
- spec/chewy/search/parameters/limit_spec.rb
|
423
425
|
- spec/chewy/search/parameters/load_spec.rb
|
424
426
|
- spec/chewy/search/parameters/min_score_spec.rb
|
@@ -537,6 +539,7 @@ test_files:
|
|
537
539
|
- spec/chewy/search/parameters/ignore_unavailable_spec.rb
|
538
540
|
- spec/chewy/search/parameters/indices_spec.rb
|
539
541
|
- spec/chewy/search/parameters/integer_storage_examples.rb
|
542
|
+
- spec/chewy/search/parameters/knn_spec.rb
|
540
543
|
- spec/chewy/search/parameters/limit_spec.rb
|
541
544
|
- spec/chewy/search/parameters/load_spec.rb
|
542
545
|
- spec/chewy/search/parameters/min_score_spec.rb
|