Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
c4244fdc
M
milvus
项目概览
milvus
/
milvus
10 个月 前同步成功
通知
260
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,体验更适合开发者的 AI 搜索 >>
提交
c4244fdc
编写于
5月 11, 2019
作者:
X
xj.lin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix search stack overflow
Former-commit-id: 39801544686f061a63f4c3f1dec11565164a928d
上级
fddf7320
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
4 deletion
+9
-4
cpp/src/db/DBImpl.cpp
cpp/src/db/DBImpl.cpp
+9
-4
未找到文件。
cpp/src/db/DBImpl.cpp
浏览文件 @
c4244fdc
...
...
@@ -107,7 +107,7 @@ Status DBImpl<EngineT>::search(const std::string& group_id, size_t k, size_t nq,
using
SearchResult
=
std
::
pair
<
std
::
vector
<
long
>
,
std
::
vector
<
float
>>
;
std
::
vector
<
SearchResult
>
batchresult
(
nq
);
// allocate nq cells.
auto
cluster
=
[
&
](
long
*
nns
,
float
*
dis
)
->
void
{
auto
cluster
=
[
&
](
long
*
nns
,
float
*
dis
,
const
int
&
k
)
->
void
{
for
(
int
i
=
0
;
i
<
nq
;
++
i
)
{
auto
f_begin
=
batchresult
[
i
].
first
.
cbegin
();
auto
s_begin
=
batchresult
[
i
].
second
.
cbegin
();
...
...
@@ -134,8 +134,10 @@ Status DBImpl<EngineT>::search(const std::string& group_id, size_t k, size_t nq,
search_set_size
+=
file_size
;
LOG
(
DEBUG
)
<<
"Search file_type "
<<
file
.
file_type
<<
" Of Size: "
<<
file_size
<<
" M"
;
index
.
Search
(
nq
,
vectors
,
k
,
output_distence
,
output_ids
);
cluster
(
output_ids
,
output_distence
);
// cluster to each query
int
inner_k
=
index
.
Count
()
<
k
?
index
.
Count
()
:
k
;
index
.
Search
(
nq
,
vectors
,
inner_k
,
output_distence
,
output_ids
);
cluster
(
output_ids
,
output_distence
,
inner_k
);
// cluster to each query
memset
(
output_distence
,
0
,
k
*
nq
*
sizeof
(
float
));
memset
(
output_ids
,
0
,
k
*
nq
*
sizeof
(
long
));
}
...
...
@@ -161,8 +163,11 @@ Status DBImpl<EngineT>::search(const std::string& group_id, size_t k, size_t nq,
for
(
auto
&
result_pair
:
batchresult
)
{
auto
&
dis
=
result_pair
.
second
;
auto
&
nns
=
result_pair
.
first
;
topk_cpu
(
dis
,
k
,
output_distence
,
output_ids
);
for
(
int
i
=
0
;
i
<
k
;
++
i
)
{
int
inner_k
=
dis
.
size
()
<
k
?
dis
.
size
()
:
k
;
for
(
int
i
=
0
;
i
<
inner_k
;
++
i
)
{
res
.
emplace_back
(
nns
[
output_ids
[
i
]]);
// mapping
}
results
.
push_back
(
res
);
// append to result list
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录