提交 b8148d8e 编写于 作者: G groot

Merge branch 'jinhai' of 192.168.1.105:jinhai/vecwise_engine into jinhai


Former-commit-id: bd511cfab2d3813dee05c34dcf068622da2fef94
......@@ -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,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册