提交 1f6a6458 编写于 作者: Y yu yunfeng 提交者: jinhai

MS-151 Fix topk problem


Former-commit-id: ead499ba9f5f152a6c2f9d0c6e2578f6f3a80f8e
上级 e0a6469f
......@@ -138,7 +138,6 @@ Status FaissExecutionEngine::Search(long n,
auto start_time = METRICS_NOW_TIME;
std::shared_ptr<faiss::IndexIVF> ivf_index = std::dynamic_pointer_cast<faiss::IndexIVF>(pIndex_);
//ENGINE_LOG_DEBUG << "Index nlist: " << ivf_index->nlist << ", ntotal: "<< ivf_index->ntotal;
if(ivf_index) {
ENGINE_LOG_DEBUG << "Index type: IVFFLAT nProbe: " << nprobe_;
ivf_index->nprobe = nprobe_;
......
......@@ -53,7 +53,7 @@ std::shared_ptr<IScheduleTask> SearchTask::Execute() {
std::vector<float> output_distence;
for(auto& context : search_contexts_) {
//step 1: allocate memory
auto inner_k = index_engine_->Count() < context->topk() ? index_engine_->Count() : context->topk();
auto inner_k = context->topk();
output_ids.resize(inner_k*context->nq());
output_distence.resize(inner_k*context->nq());
......@@ -67,17 +67,9 @@ std::shared_ptr<IScheduleTask> SearchTask::Execute() {
//step 3: cluster result
SearchContext::ResultSet result_set;
auto spec_k = index_engine_->Count() < context->topk() ? index_engine_->Count() : context->topk();
SearchTask::ClusterResult(output_ids, output_distence, context->nq(), spec_k, result_set);
ClusterResult(output_ids, output_distence, context->nq(), spec_k, result_set);
rc.Record("cluster result");
SERVER_LOG_DEBUG << "Query Result: ";
for(auto& id2score_vector: result_set) {
for(auto& pair: id2score_vector) {
SERVER_LOG_DEBUG << "id: " << pair.first << ", distance: " << pair.second;
}
}
//step 4: pick up topk result
SearchTask::TopkResult(result_set, inner_k, context->GetResult());
rc.Record("reduce topk");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册