Skip to content

Commit 2bb1738

Browse files
committed
Use moved node to check for filter
1 parent 73f7404 commit 2bb1738

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/core/search/search.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -687,9 +687,10 @@ std::unique_ptr<AstNode> SearchAlgorithm::PopKnnNode() {
687687
if (auto* knn = get_if<AstKnnNode>(query_.get()); knn) {
688688
// Save knn score sort option
689689
knn_hnsw_score_sort_option_ = KnnScoreSortOption{string_view{knn->score_alias}, knn->limit};
690-
if (!std::holds_alternative<AstStarNode>(*(knn)->filter))
691-
query_.swap(knn->filter);
692690
auto node = std::move(query_);
691+
AstKnnNode* moved_knn_node = reinterpret_cast<AstKnnNode*>(node.get());
692+
if (!std::holds_alternative<AstStarNode>(*moved_knn_node->filter))
693+
query_.swap(moved_knn_node->filter);
693694
return node;
694695
}
695696
LOG(DFATAL) << "Should not reach here";

src/server/search/search_family_test.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3560,9 +3560,9 @@ TEST_F(SearchFamilyTest, KnnHnsw) {
35603560
};
35613561

35623562
// Add some test documents with vector data
3563-
// Run({"HSET", "doc1", "even", "yes", "pos", FloatToBytes(1.0f)});
3564-
// Run({"HSET", "doc2", "even", "no", "pos", FloatToBytes(2.0f)});
3565-
// Run({"HSET", "doc3", "even", "yes", "pos", FloatToBytes(3.0f)});
3563+
Run({"HSET", "doc1", "even", "yes", "pos", FloatToBytes(1.0f)});
3564+
Run({"HSET", "doc2", "even", "no", "pos", FloatToBytes(2.0f)});
3565+
Run({"HSET", "doc3", "even", "yes", "pos", FloatToBytes(3.0f)});
35663566

35673567
// Query vector (2.0f - should find doc2 closest, but filtered to "yes" docs)
35683568
string query_vec = FloatToBytes(2.0f);

0 commit comments

Comments
 (0)