mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-10-10 05:36:35 +00:00
feat: add indexUid to SearchMetadata
- Add indexUid field to SearchMetadata struct - Update perform_search to include indexUid in metadata - Update federated search to include indexUid for each query The metadata field now contains both queryUid and indexUid: - For /search: single object with queryUid and indexUid - For /multi-search: each result has metadata with both fields - For federated search: array of objects, each with queryUid and indexUid
This commit is contained in:
@@ -63,7 +63,8 @@ pub async fn perform_federated_search(
|
||||
let mut query_metadata = Vec::new();
|
||||
for (query_index, federated_query) in queries.into_iter().enumerate() {
|
||||
let query_uid = Uuid::now_v7();
|
||||
query_metadata.push(SearchMetadata { query_uid });
|
||||
query_metadata
|
||||
.push(SearchMetadata { query_uid, index_uid: federated_query.index_uid.to_string() });
|
||||
partitioned_queries.partition(federated_query, query_index, &network, features)?
|
||||
}
|
||||
|
||||
|
@@ -841,6 +841,7 @@ pub struct SearchHit {
|
||||
#[schema(rename_all = "camelCase")]
|
||||
pub struct SearchMetadata {
|
||||
pub query_uid: Uuid,
|
||||
pub index_uid: String,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Clone, PartialEq, ToSchema)]
|
||||
@@ -1143,6 +1144,7 @@ pub fn perform_search(
|
||||
request_uid: Uuid,
|
||||
) -> Result<SearchResult, ResponseError> {
|
||||
let before_search = Instant::now();
|
||||
let index_uid_for_metadata = index_uid.clone();
|
||||
let rtxn = index.read_txn()?;
|
||||
let time_budget = match index.search_cutoff(&rtxn)? {
|
||||
Some(cutoff) => TimeBudget::new(Duration::from_millis(cutoff)),
|
||||
@@ -1163,7 +1165,7 @@ pub fn perform_search(
|
||||
query_vector,
|
||||
},
|
||||
semantic_hit_count,
|
||||
) = search_from_kind(index_uid, search_kind, search)?;
|
||||
) = search_from_kind(index_uid.clone(), search_kind, search)?;
|
||||
|
||||
let SearchQuery {
|
||||
q,
|
||||
@@ -1260,7 +1262,7 @@ pub fn perform_search(
|
||||
used_negative_operator,
|
||||
semantic_hit_count,
|
||||
request_uid: Some(request_uid),
|
||||
metadata: Some(SearchMetadata { query_uid }),
|
||||
metadata: Some(SearchMetadata { query_uid, index_uid: index_uid_for_metadata }),
|
||||
};
|
||||
Ok(result)
|
||||
}
|
||||
|
Reference in New Issue
Block a user