Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
006dae35
M
milvus
项目概览
milvus
/
milvus
大约 1 年 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
006dae35
编写于
6月 11, 2021
作者:
F
FluorineDog
提交者:
GitHub
6月 11, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix retrieve bug (#5727)
Signed-off-by:
N
fluorinedog
<
fluorinedog@gmail.com
>
上级
faf57520
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
59 addition
and
2 deletion
+59
-2
internal/core/src/segcore/ScalarIndex.h
internal/core/src/segcore/ScalarIndex.h
+12
-0
internal/core/src/segcore/SegmentGrowingImpl.cpp
internal/core/src/segcore/SegmentGrowingImpl.cpp
+6
-0
internal/core/src/segcore/SegmentGrowingImpl.h
internal/core/src/segcore/SegmentGrowingImpl.h
+4
-0
internal/core/src/segcore/SegmentInterface.cpp
internal/core/src/segcore/SegmentInterface.cpp
+7
-0
internal/core/src/segcore/SegmentInterface.h
internal/core/src/segcore/SegmentInterface.h
+4
-0
internal/core/src/segcore/SegmentSealedImpl.cpp
internal/core/src/segcore/SegmentSealedImpl.cpp
+21
-2
internal/core/src/segcore/SegmentSealedImpl.h
internal/core/src/segcore/SegmentSealedImpl.h
+4
-0
internal/core/src/segcore/segment_c.cpp
internal/core/src/segcore/segment_c.cpp
+1
-0
未找到文件。
internal/core/src/segcore/ScalarIndex.h
浏览文件 @
006dae35
...
...
@@ -16,6 +16,7 @@
#include <memory>
#include <vector>
#include <string>
#include <utility>
namespace
milvus
::
segcore
{
...
...
@@ -25,6 +26,8 @@ class ScalarIndexBase {
virtual
std
::
pair
<
std
::
unique_ptr
<
IdArray
>
,
std
::
vector
<
SegOffset
>>
do_search_ids
(
const
IdArray
&
ids
)
const
=
0
;
virtual
~
ScalarIndexBase
()
=
default
;
virtual
std
::
string
debug
()
const
=
0
;
};
class
ScalarIndexVector
:
public
ScalarIndexBase
{
...
...
@@ -41,6 +44,15 @@ class ScalarIndexVector : public ScalarIndexBase {
std
::
pair
<
std
::
unique_ptr
<
IdArray
>
,
std
::
vector
<
SegOffset
>>
do_search_ids
(
const
IdArray
&
ids
)
const
override
;
std
::
string
debug
()
const
override
{
std
::
string
dbg_str
;
for
(
auto
pr
:
mapping_
)
{
dbg_str
+=
"<"
+
std
::
to_string
(
pr
.
first
)
+
"->"
+
std
::
to_string
(
pr
.
second
.
get
())
+
">"
;
}
return
dbg_str
;
}
private:
std
::
vector
<
std
::
pair
<
T
,
SegOffset
>>
mapping_
;
};
...
...
internal/core/src/segcore/SegmentGrowingImpl.cpp
浏览文件 @
006dae35
...
...
@@ -20,6 +20,7 @@
#include <knowhere/index/vector_index/VecIndexFactory.h>
#include <faiss/utils/distances.h>
#include <query/SearchOnSealed.h>
#include <iostream>
#include "query/generated/ExecPlanNodeVisitor.h"
#include "segcore/SegmentGrowingImpl.h"
#include "query/PlanNode.h"
...
...
@@ -486,4 +487,9 @@ SegmentGrowingImpl::search_ids(const IdArray& id_array, Timestamp timestamp) con
return
{
std
::
move
(
res_id_arr
),
std
::
move
(
res_offsets
)};
}
std
::
string
SegmentGrowingImpl
::
debug
()
const
{
return
"Growing
\n
"
;
}
}
// namespace milvus::segcore
internal/core/src/segcore/SegmentGrowingImpl.h
浏览文件 @
006dae35
...
...
@@ -31,6 +31,7 @@
#include "InsertRecord.h"
#include <utility>
#include <memory>
#include <string>
#include <vector>
namespace
milvus
::
segcore
{
...
...
@@ -69,6 +70,9 @@ class SegmentGrowingImpl : public SegmentGrowing {
int64_t
GetMemoryUsageInBytes
()
const
override
;
std
::
string
debug
()
const
override
;
public:
const
InsertRecord
&
get_insert_record
()
const
{
...
...
internal/core/src/segcore/SegmentInterface.cpp
浏览文件 @
006dae35
...
...
@@ -197,6 +197,13 @@ SegmentInternalInterface::GetEntityById(const std::vector<FieldOffset>& field_of
auto
results
=
std
::
make_unique
<
proto
::
plan
::
RetrieveResults
>
();
auto
[
ids_
,
seg_offsets
]
=
search_ids
(
id_array
,
timestamp
);
// std::string dbg_log;
// dbg_log += "id_array:" + id_array.DebugString() + "\n";
// dbg_log += "ids:" + ids_->DebugString() + "\n";
// dbg_log += "segment_info:" + this->debug();
// std::cout << dbg_log << std::endl;
results
->
set_allocated_ids
(
ids_
.
release
());
auto
fields_data
=
results
->
mutable_fields_data
();
...
...
internal/core/src/segcore/SegmentInterface.h
浏览文件 @
006dae35
...
...
@@ -22,6 +22,7 @@
#include <memory>
#include <vector>
#include <utility>
#include <string>
namespace
milvus
::
segcore
{
...
...
@@ -93,6 +94,9 @@ class SegmentInternalInterface : public SegmentInterface {
const
IdArray
&
id_array
,
Timestamp
timestamp
)
const
override
;
virtual
std
::
string
debug
()
const
=
0
;
public:
virtual
void
vector_search
(
int64_t
vec_count
,
...
...
internal/core/src/segcore/SegmentSealedImpl.cpp
浏览文件 @
006dae35
...
...
@@ -74,14 +74,23 @@ SegmentSealedImpl::LoadFieldData(const LoadFieldDataInfo& info) {
// prepare data
aligned_vector
<
idx_t
>
vec_data
(
info
.
row_count
);
std
::
copy_n
(
src_ptr
,
info
.
row_count
,
vec_data
.
data
());
auto
pk_index
=
create_index
(
vec_data
.
data
(),
vec_data
.
size
());
std
::
unique_ptr
<
ScalarIndexBase
>
pk_index_
;
// fix unintentional index update
if
(
schema_
->
get_is_auto_id
())
{
pk_index_
=
create_index
(
vec_data
.
data
(),
vec_data
.
size
());
}
// write data under lock
std
::
unique_lock
lck
(
mutex_
);
update_row_count
(
info
.
row_count
);
AssertInfo
(
row_ids_
.
empty
(),
"already exists"
);
row_ids_
=
std
::
move
(
vec_data
);
primary_key_index_
=
std
::
move
(
pk_index
);
if
(
schema_
->
get_is_auto_id
())
{
primary_key_index_
=
std
::
move
(
pk_index_
);
}
++
system_ready_count_
;
}
else
{
// prepare data
...
...
@@ -118,6 +127,7 @@ SegmentSealedImpl::LoadFieldData(const LoadFieldDataInfo& info) {
field_datas_
[
field_offset
.
get
()]
=
std
::
move
(
vec_data
);
scalar_indexings_
[
field_offset
.
get
()]
=
std
::
move
(
index
);
}
if
(
schema_
->
get_primary_key_offset
()
==
field_offset
)
{
primary_key_index_
=
std
::
move
(
pk_index_
);
}
...
...
@@ -410,6 +420,15 @@ SegmentSealedImpl::search_ids(const IdArray& id_array, Timestamp timestamp) cons
return
primary_key_index_
->
do_search_ids
(
id_array
);
}
std
::
string
SegmentSealedImpl
::
debug
()
const
{
std
::
string
log_str
;
log_str
+=
"Sealed
\n
"
;
log_str
+=
"Index:"
+
primary_key_index_
->
debug
();
log_str
+=
"
\n
"
;
return
log_str
;
}
SegmentSealedPtr
CreateSealedSegment
(
SchemaPtr
schema
)
{
return
std
::
make_unique
<
SegmentSealedImpl
>
(
schema
);
...
...
internal/core/src/segcore/SegmentSealedImpl.h
浏览文件 @
006dae35
...
...
@@ -17,6 +17,7 @@
#include <vector>
#include <memory>
#include <utility>
#include <string>
namespace
milvus
::
segcore
{
class
SegmentSealedImpl
:
public
SegmentSealed
{
...
...
@@ -57,6 +58,9 @@ class SegmentSealedImpl : public SegmentSealed {
int64_t
size_per_chunk
()
const
override
;
std
::
string
debug
()
const
override
;
protected:
// blob and row_count
SpanBase
...
...
internal/core/src/segcore/segment_c.cpp
浏览文件 @
006dae35
...
...
@@ -22,6 +22,7 @@
#include <knowhere/index/vector_index/adapter/VectorAdapter.h>
#include "common/Types.h"
#include "common/CGoHelper.h"
#include <iostream>
////////////////////////////// common interfaces //////////////////////////////
CSegmentInterface
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录