diff --git a/internal/core/src/index/TextMatchIndex.h b/internal/core/src/index/TextMatchIndex.h index ae894d7b7d..59d725e1f3 100644 --- a/internal/core/src/index/TextMatchIndex.h +++ b/internal/core/src/index/TextMatchIndex.h @@ -101,19 +101,26 @@ class TextMatchIndex : public InvertedIndexTantivy { class TextMatchIndexHolder { public: explicit TextMatchIndexHolder( - std::unique_ptr index) - : index_(std::move(index)), size_(index_ ? index_->ByteSize() : 0) { - if (size_ > 0) { - milvus::cachinglayer::Manager::GetInstance().ChargeLoadedResource( - {size_, 0}); - } + std::unique_ptr index, bool mmap_enabled) + : index_(std::move(index)), loaded_size_([&]() { + if (!index_) { + return milvus::cachinglayer::ResourceUsage(0, 0); + } + if (mmap_enabled) { + return milvus::cachinglayer::ResourceUsage( + 0, index_->ByteSize()); + } else { + return milvus::cachinglayer::ResourceUsage(index_->ByteSize(), + 0); + } + }()) { + milvus::cachinglayer::Manager::GetInstance().ChargeLoadedResource( + loaded_size_); } ~TextMatchIndexHolder() { - if (size_ > 0) { - milvus::cachinglayer::Manager::GetInstance().RefundLoadedResource( - {size_, 0}); - } + milvus::cachinglayer::Manager::GetInstance().RefundLoadedResource( + loaded_size_); } milvus::index::TextMatchIndex* @@ -123,7 +130,7 @@ class TextMatchIndexHolder { private: std::unique_ptr index_; - int64_t size_; + const milvus::cachinglayer::ResourceUsage loaded_size_; }; } // namespace milvus::index diff --git a/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp b/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp index d2a5b39ecf..05206524dd 100644 --- a/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp +++ b/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp @@ -1739,8 +1739,8 @@ ChunkedSegmentSealedImpl::CreateTextIndex(FieldId field_id) { index->RegisterTokenizer("milvus_tokenizer", field_meta.get_analyzer_params().c_str()); - text_indexes_[field_id] = - std::make_shared(std::move(index)); + text_indexes_[field_id] = std::make_shared( + std::move(index), cfg.GetScalarIndexEnableMmap()); } void diff --git a/internal/core/src/segcore/storagev1translator/TextMatchIndexTranslator.cpp b/internal/core/src/segcore/storagev1translator/TextMatchIndexTranslator.cpp index 7f2380c9b2..f41fc40219 100644 --- a/internal/core/src/segcore/storagev1translator/TextMatchIndexTranslator.cpp +++ b/internal/core/src/segcore/storagev1translator/TextMatchIndexTranslator.cpp @@ -41,7 +41,7 @@ TextMatchIndexTranslator::TextMatchIndexTranslator( /* is_index */ true), milvus::segcore::getCacheWarmupPolicy(/* is_vector */ false, /* is_index */ true), - /* support_eviction */ false) { + /* support_eviction */ true) { } size_t @@ -59,7 +59,16 @@ std::pairSetCellSize({index->ByteSize(), 0}); + if (load_info_.enable_mmap) { + index->SetCellSize({0, index->ByteSize()}); + } else { + index->SetCellSize({index->ByteSize(), 0}); + } std::vector>>