diff --git a/src/search.rs b/src/search.rs index 529a1adb..0eae94c0 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() }