in jni/src/faiss_wrapper.cpp [318:344]
void SetExtraParameters(knn_jni::JNIUtilInterface * jniUtil, JNIEnv *env,
const std::unordered_map<std::string, jobject>& parametersCpp, faiss::Index * index) {
std::unordered_map<std::string,jobject>::const_iterator value;
if (auto * indexIvf = dynamic_cast<faiss::IndexIVF*>(index)) {
if ((value = parametersCpp.find(knn_jni::NPROBES)) != parametersCpp.end()) {
indexIvf->nprobe = jniUtil->ConvertJavaObjectToCppInteger(env, value->second);
}
if ((value = parametersCpp.find(knn_jni::COARSE_QUANTIZER)) != parametersCpp.end()
&& indexIvf->quantizer != nullptr) {
auto subParametersCpp = jniUtil->ConvertJavaMapToCppMap(env, value->second);
SetExtraParameters(jniUtil, env, subParametersCpp, indexIvf->quantizer);
}
}
if (auto * indexHnsw = dynamic_cast<faiss::IndexHNSW*>(index)) {
if ((value = parametersCpp.find(knn_jni::EF_CONSTRUCTION)) != parametersCpp.end()) {
indexHnsw->hnsw.efConstruction = jniUtil->ConvertJavaObjectToCppInteger(env, value->second);
}
if ((value = parametersCpp.find(knn_jni::EF_SEARCH)) != parametersCpp.end()) {
indexHnsw->hnsw.efSearch = jniUtil->ConvertJavaObjectToCppInteger(env, value->second);
}
}
}