meilisearch / meilisearch-rust

Rust wrapper for the Meilisearch API.
https://www.meilisearch.com
MIT License
362 stars 91 forks source link

[v1.10.0] Federated search #609

Open brunoocasali opened 2 months ago

brunoocasali commented 2 months ago

Following this central issue

Explanation of the feature

Pass new search parameters to multiSearch method to get one single list of result Ensure the queries passed can accept the federationOptions search parameter No need to handle the case of errors, Meilisearch does it

Usage: https://meilisearch.notion.site/v1-10-federated-search-698dfe36ab6b4668b044f735fb40f0b2?pvs=74

TODO

⚠️ Please do 1 PR for all of these changes, and not several.

CommanderStorm commented 2 months ago

@brunoocasali How should this work in the case of the rust-sdk? We currently return

https://docs.rs/meilisearch-sdk/latest/meilisearch_sdk/search/struct.MultiSearchResponse.html

pub struct MultiSearchResponse<T> {
    pub results: Vec<SearchResults<T>>,
}

=> adding an (serde-untagged) Enum in its place would be Breaking.

Alternatively, should I add another method next to https://docs.rs/meilisearch-sdk/latest/meilisearch_sdk/client/struct.Client.html#method.execute_multi_search_query

pub async fn execute_multi_search_query<T: 'static + DeserializeOwned + Send + Sync>(
        &self,
        body: &MultiSearchQuery<'_, '_, Http>,
    ) -> Result<MultiSearchResponse<T>, Error> {

For example with this signature

pub async fn execute_federated_multi_search_query<T: 'static + DeserializeOwned + Send + Sync>(
        &self,
        body: &MultiSearchQuery<'_, '_, Http>,
        federationOptions: TODO,
    ) -> Result<MultiSearchResponse<T>, Error> {