Skip to content

Commit c1ebc2f

Browse files
committed
Added support for hybrid search
1 parent 7dbe96b commit c1ebc2f

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

lib/searchkick/query.rb

+1-5
Original file line numberDiff line numberDiff line change
@@ -529,14 +529,10 @@ def prepare
529529
# knn
530530
knn = options[:knn]
531531
if knn
532-
if term != "*"
533-
raise ArgumentError, "Hybrid search not supported yet"
534-
end
535-
536532
field = knn[:field]
537533
vector = knn[:vector]
538534
k = per_page + offset
539-
filter = payload.delete(:query)
535+
filter = term == "*" ? payload.delete(:query) : payload[:query]
540536

541537
if Searchkick.opensearch?
542538
payload[:query] = {

test/hybrid_test.rb

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
require_relative "test_helper"
2+
3+
class HybridTest < Minitest::Test
4+
def setup
5+
skip unless Searchkick.knn_support?
6+
super
7+
end
8+
9+
def test_basic
10+
store [
11+
{name: "Product A", embedding: [1, 2, 3]},
12+
{name: "Item B", embedding: [1, 2, 3]},
13+
{name: "Product C", embedding: [-1, -2, -3]}
14+
]
15+
assert_order "product", ["Product A", "Product C"], knn: {field: :embedding, vector: [1, 2, 3]}
16+
end
17+
end

0 commit comments

Comments
 (0)