diff --git a/internal/core/src/query/SearchOnGrowing.cpp b/internal/core/src/query/SearchOnGrowing.cpp index 4a9fa0364d..a14c919ce2 100644 --- a/internal/core/src/query/SearchOnGrowing.cpp +++ b/internal/core/src/query/SearchOnGrowing.cpp @@ -74,15 +74,16 @@ FloatIndexSearch(const segcore::SegmentGrowingImpl& segment, void SearchOnGrowing(const segcore::SegmentGrowingImpl& segment, - int64_t ins_barrier, const query::SearchInfo& info, const void* query_data, int64_t num_queries, + Timestamp timestamp, const BitsetView& bitset, SearchResult& results) { auto& schema = segment.get_schema(); auto& indexing_record = segment.get_indexing_record(); auto& record = segment.get_insert_record(); + auto active_count = segment.get_active_count(timestamp); // step 1.1: get meta // step 1.2: get which vector field to search @@ -102,19 +103,19 @@ SearchOnGrowing(const segcore::SegmentGrowingImpl& segment, int32_t current_chunk_id = 0; if (field.get_data_type() == DataType::VECTOR_FLOAT) { - current_chunk_id = FloatIndexSearch(segment, info, query_data, num_queries, ins_barrier, bitset, final_qr); + current_chunk_id = FloatIndexSearch(segment, info, query_data, num_queries, active_count, bitset, final_qr); } // step 3: brute force search where small indexing is unavailable auto vec_ptr = record.get_field_data_base(vecfield_id); auto vec_size_per_chunk = vec_ptr->get_size_per_chunk(); - auto max_chunk = upper_div(ins_barrier, vec_size_per_chunk); + auto max_chunk = upper_div(active_count, vec_size_per_chunk); for (int chunk_id = current_chunk_id; chunk_id < max_chunk; ++chunk_id) { auto chunk_data = vec_ptr->get_chunk_data(chunk_id); auto element_begin = chunk_id * vec_size_per_chunk; - auto element_end = std::min(ins_barrier, (chunk_id + 1) * vec_size_per_chunk); + auto element_end = std::min(active_count, (chunk_id + 1) * vec_size_per_chunk); auto size_per_chunk = element_end - element_begin; auto sub_view = bitset.subview(element_begin, size_per_chunk); diff --git a/internal/core/src/query/SearchOnGrowing.h b/internal/core/src/query/SearchOnGrowing.h index 949798c1d8..dfb419b8b0 100644 --- a/internal/core/src/query/SearchOnGrowing.h +++ b/internal/core/src/query/SearchOnGrowing.h @@ -18,10 +18,10 @@ namespace milvus::query { void SearchOnGrowing(const segcore::SegmentGrowingImpl& segment, - int64_t ins_barrier, const query::SearchInfo& info, const void* query_data, int64_t num_queries, + Timestamp timestamp, const BitsetView& bitset, SearchResult& results); diff --git a/internal/core/src/query/SearchOnSealed.cpp b/internal/core/src/query/SearchOnSealed.cpp index d0b8fbb0ab..0e4d4b6eee 100644 --- a/internal/core/src/query/SearchOnSealed.cpp +++ b/internal/core/src/query/SearchOnSealed.cpp @@ -27,8 +27,7 @@ SearchOnSealed(const Schema& schema, const void* query_data, int64_t num_queries, const BitsetView& bitset, - SearchResult& result, - int64_t segment_id) { + SearchResult& result) { auto topk = search_info.topk_; auto round_decimal = search_info.round_decimal_; diff --git a/internal/core/src/query/SearchOnSealed.h b/internal/core/src/query/SearchOnSealed.h index ee6635d3a2..f813ca0de5 100644 --- a/internal/core/src/query/SearchOnSealed.h +++ b/internal/core/src/query/SearchOnSealed.h @@ -25,7 +25,6 @@ SearchOnSealed(const Schema& schema, const void* query_data, int64_t num_queries, const BitsetView& view, - SearchResult& result, - int64_t segment_id); + SearchResult& result); } // namespace milvus::query diff --git a/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp b/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp index b24a2930ea..4dd1ec9b89 100644 --- a/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp +++ b/internal/core/src/query/visitors/ExecPlanNodeVisitor.cpp @@ -104,8 +104,7 @@ ExecPlanNodeVisitor::VectorVisitorImpl(VectorPlanNode& node) { return; } BitsetView final_view = bitset_holder; - segment->vector_search(active_count, node.search_info_, src_data, num_queries, timestamp_, final_view, - search_result); + segment->vector_search(node.search_info_, src_data, num_queries, timestamp_, final_view, search_result); search_result_opt_ = std::move(search_result); } diff --git a/internal/core/src/segcore/SegmentGrowingImpl.cpp b/internal/core/src/segcore/SegmentGrowingImpl.cpp index f677fb56e4..5c7e1e5a9e 100644 --- a/internal/core/src/segcore/SegmentGrowingImpl.cpp +++ b/internal/core/src/segcore/SegmentGrowingImpl.cpp @@ -176,8 +176,7 @@ SegmentGrowingImpl::num_chunk() const { } void -SegmentGrowingImpl::vector_search(int64_t vec_count, - query::SearchInfo& search_info, +SegmentGrowingImpl::vector_search(query::SearchInfo& search_info, const void* query_data, int64_t query_count, Timestamp timestamp, @@ -185,10 +184,10 @@ SegmentGrowingImpl::vector_search(int64_t vec_count, SearchResult& output) const { auto& sealed_indexing = this->get_sealed_indexing_record(); if (sealed_indexing.is_ready(search_info.field_id_)) { - query::SearchOnSealed(this->get_schema(), sealed_indexing, search_info, query_data, query_count, bitset, output, - id_); + query::SearchOnSealed(this->get_schema(), sealed_indexing, search_info, query_data, query_count, bitset, + output); } else { - SearchOnGrowing(*this, vec_count, search_info, query_data, query_count, bitset, output); + query::SearchOnGrowing(*this, search_info, query_data, query_count, timestamp, bitset, output); } } diff --git a/internal/core/src/segcore/SegmentGrowingImpl.h b/internal/core/src/segcore/SegmentGrowingImpl.h index ab551efe02..ab279f080f 100644 --- a/internal/core/src/segcore/SegmentGrowingImpl.h +++ b/internal/core/src/segcore/SegmentGrowingImpl.h @@ -174,8 +174,7 @@ class SegmentGrowingImpl : public SegmentGrowing { mask_with_timestamps(BitsetType& bitset_chunk, Timestamp timestamp) const override; void - vector_search(int64_t vec_count, - query::SearchInfo& search_info, + vector_search(query::SearchInfo& search_info, const void* query_data, int64_t query_count, Timestamp timestamp, diff --git a/internal/core/src/segcore/SegmentInterface.h b/internal/core/src/segcore/SegmentInterface.h index 739bd9dd27..c7fe4301a0 100644 --- a/internal/core/src/segcore/SegmentInterface.h +++ b/internal/core/src/segcore/SegmentInterface.h @@ -129,8 +129,7 @@ class SegmentInternalInterface : public SegmentInterface { public: virtual void - vector_search(int64_t vec_count, - query::SearchInfo& search_info, + vector_search(query::SearchInfo& search_info, const void* query_data, int64_t query_count, Timestamp timestamp, diff --git a/internal/core/src/segcore/SegmentSealedImpl.cpp b/internal/core/src/segcore/SegmentSealedImpl.cpp index c98e39eee8..bbd77c408e 100644 --- a/internal/core/src/segcore/SegmentSealedImpl.cpp +++ b/internal/core/src/segcore/SegmentSealedImpl.cpp @@ -349,8 +349,7 @@ SegmentSealedImpl::mask_with_delete(BitsetType& bitset, int64_t ins_barrier, Tim } void -SegmentSealedImpl::vector_search(int64_t vec_count, - query::SearchInfo& search_info, +SegmentSealedImpl::vector_search(query::SearchInfo& search_info, const void* query_data, int64_t query_count, Timestamp timestamp, @@ -364,7 +363,7 @@ SegmentSealedImpl::vector_search(int64_t vec_count, if (get_bit(index_ready_bitset_, field_id)) { AssertInfo(vector_indexings_.is_ready(field_id), "vector indexes isn't ready for field " + std::to_string(field_id.get())); - query::SearchOnSealed(*schema_, vector_indexings_, search_info, query_data, query_count, bitset, output, id_); + query::SearchOnSealed(*schema_, vector_indexings_, search_info, query_data, query_count, bitset, output); return; } else if (!get_bit(field_data_ready_bitset_, field_id)) { PanicInfo("Field Data is not loaded"); diff --git a/internal/core/src/segcore/SegmentSealedImpl.h b/internal/core/src/segcore/SegmentSealedImpl.h index 3152963f6d..41bee3a333 100644 --- a/internal/core/src/segcore/SegmentSealedImpl.h +++ b/internal/core/src/segcore/SegmentSealedImpl.h @@ -141,8 +141,7 @@ class SegmentSealedImpl : public SegmentSealed { mask_with_timestamps(BitsetType& bitset_chunk, Timestamp timestamp) const override; void - vector_search(int64_t vec_count, - query::SearchInfo& search_info, + vector_search(query::SearchInfo& search_info, const void* query_data, int64_t query_count, Timestamp timestamp,