mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-06 10:52:56 +08:00
feat(db): add dates filter for search
Former-commit-id: 04ba53b11c8bb7fbd90877d1be6e82bb80e2247c
This commit is contained in:
parent
688a9992be
commit
5d5bbe842d
@ -30,6 +30,9 @@ public:
|
||||
virtual Status search(const std::string& group_id, size_t k, size_t nq,
|
||||
const float* vectors, QueryResults& results) = 0;
|
||||
|
||||
virtual Status search(const std::string& group_id, size_t k, size_t nq,
|
||||
const float* vectors, const meta::DatesT& dates, QueryResults& results) = 0;
|
||||
|
||||
virtual Status drop_all() = 0;
|
||||
|
||||
virtual Status count(const std::string& group_id, long& result) = 0;
|
||||
|
||||
@ -57,14 +57,21 @@ Status DBImpl::add_vectors(const std::string& group_id_,
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(XUPENG): add search range based on time
|
||||
Status DBImpl::search(const std::string &group_id, size_t k, size_t nq,
|
||||
const float *vectors, QueryResults &results) {
|
||||
meta::DatesT dates = {meta::Meta::GetDate()};
|
||||
return search(group_id, k, nq, vectors, dates, results);
|
||||
}
|
||||
|
||||
Status DBImpl::search(const std::string& group_id, size_t k, size_t nq,
|
||||
const float* vectors, const meta::DatesT& dates, QueryResults& results) {
|
||||
|
||||
meta::DatePartionedGroupFilesSchema files;
|
||||
std::vector<meta::DateT> partition;
|
||||
auto status = _pMeta->files_to_search(group_id, partition, files);
|
||||
auto status = _pMeta->files_to_search(group_id, dates, files);
|
||||
if (!status.ok()) { return status; }
|
||||
|
||||
LOG(DEBUG) << "Search DateT Size=" << files.size();
|
||||
|
||||
meta::GroupFilesSchema index_files;
|
||||
meta::GroupFilesSchema raw_files;
|
||||
for (auto &day_files : files) {
|
||||
|
||||
@ -36,6 +36,9 @@ public:
|
||||
virtual Status search(const std::string& group_id, size_t k, size_t nq,
|
||||
const float* vectors, QueryResults& results) override;
|
||||
|
||||
virtual Status search(const std::string& group_id, size_t k, size_t nq,
|
||||
const float* vectors, const meta::DatesT& dates, QueryResults& results) override;
|
||||
|
||||
virtual Status drop_all() override;
|
||||
|
||||
virtual Status count(const std::string& group_id, long& result) override;
|
||||
|
||||
@ -253,10 +253,12 @@ Status DBMetaImpl::files_to_index(GroupFilesSchema& files) {
|
||||
}
|
||||
|
||||
Status DBMetaImpl::files_to_search(const std::string &group_id,
|
||||
std::vector<DateT> partition,
|
||||
const DatesT& partition,
|
||||
DatePartionedGroupFilesSchema &files) {
|
||||
// TODO: support data partition
|
||||
files.clear();
|
||||
DatesT today = {Meta::GetDate()};
|
||||
const DatesT& dates = (partition.empty() == true) ? today : partition;
|
||||
|
||||
try {
|
||||
auto selected = ConnectorPtr->select(columns(&GroupFileSchema::id,
|
||||
&GroupFileSchema::group_id,
|
||||
@ -265,6 +267,7 @@ Status DBMetaImpl::files_to_search(const std::string &group_id,
|
||||
&GroupFileSchema::rows,
|
||||
&GroupFileSchema::date),
|
||||
where(c(&GroupFileSchema::group_id) == group_id and
|
||||
in(&GroupFileSchema::date, dates) and
|
||||
(c(&GroupFileSchema::file_type) == (int) GroupFileSchema::RAW or
|
||||
c(&GroupFileSchema::file_type) == (int) GroupFileSchema::INDEX)));
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ public:
|
||||
DatePartionedGroupFilesSchema& files) override;
|
||||
|
||||
virtual Status files_to_search(const std::string& group_id,
|
||||
std::vector<DateT> partition,
|
||||
const DatesT& partition,
|
||||
DatePartionedGroupFilesSchema& files) override;
|
||||
|
||||
virtual Status files_to_index(GroupFilesSchema&) override;
|
||||
|
||||
@ -15,6 +15,7 @@ namespace meta {
|
||||
|
||||
typedef int DateT;
|
||||
const DateT EmptyDate = -1;
|
||||
typedef std::vector<DateT> DatesT;
|
||||
|
||||
struct GroupSchema {
|
||||
size_t id;
|
||||
@ -72,7 +73,7 @@ public:
|
||||
virtual Status update_files(GroupFilesSchema& files) = 0;
|
||||
|
||||
virtual Status files_to_search(const std::string& group_id,
|
||||
std::vector<DateT> partition,
|
||||
const DatesT& partition,
|
||||
DatePartionedGroupFilesSchema& files) = 0;
|
||||
|
||||
virtual Status files_to_merge(const std::string& group_id,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user