chewy 7.3.5 → 7.3.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|