mirror of https://github.com/milvus-io/milvus.git
Refine logs when search with unsupported metric type (#12185)
Signed-off-by: dragondriver <jiquan.long@zilliz.com>pull/12196/head
parent
7a0d5ed6c4
commit
73f18c564f
|
@ -45,7 +45,7 @@ EasyAssertInfo(bool value,
|
|||
info += " => " + std::string(extra_info);
|
||||
}
|
||||
std::cout << info << std::endl;
|
||||
throw SegcoreError(error_code, std::string(extra_info));
|
||||
throw SegcoreError(error_code, std::string(info));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,9 @@
|
|||
#include <common/Types.h>
|
||||
#include <boost/dynamic_bitset.hpp>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include "SubSearchResult.h"
|
||||
#include "segcore/Utils.h"
|
||||
|
||||
#include <faiss/utils/distances.h>
|
||||
#include <faiss/utils/BinaryDistance.h>
|
||||
|
@ -57,7 +59,9 @@ raw_search(MetricType metric_type,
|
|||
// only matched ids will be chosen, not to use heap
|
||||
binary_distance_knn_mc(metric_type, x, xb, n, ntotal, k, code_size, D, labels, bitset);
|
||||
} else {
|
||||
PanicInfo("unsupported");
|
||||
std::string msg = std::string("do binary search with unsupported metric type: ") +
|
||||
segcore::FaissMetricTypeToString(metric_type);
|
||||
PanicInfo(msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software distributed under the License
|
||||
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||
// or implied. See the License for the specific language governing permissions and limitations under the License
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
#include <exception>
|
||||
#include <stdexcept>
|
||||
#include "index/thirdparty/faiss/MetricType.h"
|
||||
|
||||
namespace milvus {
|
||||
namespace segcore {
|
||||
static inline constexpr const char*
|
||||
FaissMetricTypeToString(faiss::MetricType metric_type) {
|
||||
switch (metric_type) {
|
||||
case faiss::MetricType::METRIC_INNER_PRODUCT:
|
||||
return "METRIC_INNER_PRODUCT";
|
||||
case faiss::MetricType::METRIC_L2:
|
||||
return "METRIC_L2";
|
||||
case faiss::MetricType::METRIC_L1:
|
||||
return "METRIC_L1";
|
||||
case faiss::MetricType::METRIC_Linf:
|
||||
return "METRIC_Linf";
|
||||
case faiss::MetricType::METRIC_Lp:
|
||||
return "METRIC_Lp";
|
||||
case faiss::MetricType::METRIC_Jaccard:
|
||||
return "METRIC_Jaccard";
|
||||
case faiss::MetricType::METRIC_Tanimoto:
|
||||
return "METRIC_Tanimoto";
|
||||
case faiss::MetricType::METRIC_Hamming:
|
||||
return "METRIC_Hamming";
|
||||
case faiss::MetricType::METRIC_Substructure:
|
||||
return "METRIC_Substructure";
|
||||
case faiss::MetricType::METRIC_Superstructure:
|
||||
return "METRIC_Superstructure";
|
||||
case faiss::MetricType::METRIC_Canberra:
|
||||
return "METRIC_Canberra";
|
||||
case faiss::MetricType::METRIC_BrayCurtis:
|
||||
return "METRIC_BrayCurtis";
|
||||
case faiss::MetricType::METRIC_JensenShannon:
|
||||
return "METRIC_JensenShannon";
|
||||
default:
|
||||
return "Unsupported";
|
||||
}
|
||||
}
|
||||
} // namespace segcore
|
||||
} // namespace milvus
|
|
@ -37,6 +37,7 @@ set(MILVUS_TEST_FILES
|
|||
test_reduce_c.cpp
|
||||
test_conf_adapter_mgr.cpp
|
||||
test_similarity_corelation.cpp
|
||||
test_utils.cpp
|
||||
)
|
||||
|
||||
add_executable(all_tests
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software distributed under the License
|
||||
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||
// or implied. See the License for the specific language governing permissions and limitations under the License
|
||||
|
||||
#include "index/thirdparty/faiss/MetricType.h"
|
||||
#include "segcore/Utils.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(Util, FaissMetricTypeToString) {
|
||||
using namespace milvus::segcore;
|
||||
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_INNER_PRODUCT), "METRIC_INNER_PRODUCT"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_L2), "METRIC_L2"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_L1), "METRIC_L1"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Linf), "METRIC_Linf"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Lp), "METRIC_Lp"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Jaccard), "METRIC_Jaccard"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Tanimoto), "METRIC_Tanimoto"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Hamming), "METRIC_Hamming"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Substructure), "METRIC_Substructure"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Superstructure), "METRIC_Superstructure"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_Canberra), "METRIC_Canberra"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_BrayCurtis), "METRIC_BrayCurtis"));
|
||||
ASSERT_EQ(0, strcmp(FaissMetricTypeToString(faiss::MetricType::METRIC_JensenShannon), "METRIC_JensenShannon"));
|
||||
}
|
Loading…
Reference in New Issue