From 406d8cab9d0ed81ea6c95048ce668b8d237d58c3 Mon Sep 17 00:00:00 2001 From: Lukas Kalbertodt Date: Mon, 16 Dec 2024 12:43:58 +0100 Subject: [PATCH] Add `federation_options` to `SearchQuery` --- src/search.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/search.rs b/src/search.rs index 20287ac8..3d7f6932 100644 --- a/src/search.rs +++ b/src/search.rs @@ -349,6 +349,16 @@ pub struct SearchQuery<'a, Http: HttpClient> { #[serde(skip_serializing_if = "Option::is_none")] pub(crate) index_uid: Option<&'a str>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub(crate) federation_options: Option, +} + +#[derive(Debug, Serialize, Clone)] +#[serde(rename_all = "camelCase")] +pub struct QueryFederationOptions { + #[serde(skip_serializing_if = "Option::is_none")] + pub weight: Option, } #[allow(missing_docs)] @@ -380,6 +390,7 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> { index_uid: None, distinct: None, ranking_score_threshold: None, + federation_options: None, } } pub fn with_query<'b>(&'b mut self, query: &'a str) -> &'b mut SearchQuery<'a, Http> { @@ -583,6 +594,14 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> { self.ranking_score_threshold = Some(ranking_score_threshold); self } + /// Only usable in federated multi search queries. + pub fn with_federation_options<'b>( + &'b mut self, + federation_options: QueryFederationOptions, + ) -> &'b mut SearchQuery<'a, Http> { + self.federation_options = Some(federation_options); + self + } pub fn build(&mut self) -> SearchQuery<'a, Http> { self.clone() }