diff --git a/src/binding/params.cc b/src/binding/params.cc index 0300d6c..1b3ce75 100644 --- a/src/binding/params.cc +++ b/src/binding/params.cc @@ -1560,7 +1560,39 @@ zvec::Result ParseDiskAnnQueryParams( zvec::Status::InvalidArgument("Expected a number for 'listSize'")); } } - return std::make_shared(list_size); + + float radius{0.0f}; + if (obj.Has("radius")) { + if (!obj.Get("radius").IsNumber()) { + return tl::make_unexpected( + zvec::Status::InvalidArgument("Expected a number for 'radius'")); + } + radius = obj.Get("radius").As().FloatValue(); + } + + bool is_linear{false}; + if (obj.Has("isLinear")) { + if (!obj.Get("isLinear").IsBoolean()) { + return tl::make_unexpected( + zvec::Status::InvalidArgument("Expected a boolean for 'isLinear'")); + } + is_linear = obj.Get("isLinear").As().Value(); + } + + bool is_using_refiner{false}; + if (obj.Has("isUsingRefiner")) { + if (!obj.Get("isUsingRefiner").IsBoolean()) { + return tl::make_unexpected(zvec::Status::InvalidArgument( + "Expected a boolean for 'isUsingRefiner'")); + } + is_using_refiner = obj.Get("isUsingRefiner").As().Value(); + } + + auto params = std::make_shared(list_size); + params->set_radius(radius); + params->set_is_linear(is_linear); + params->set_is_using_refiner(is_using_refiner); + return params; }