mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-10-11 06:06:32 +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();
|
let mut query_metadata = Vec::new();
|
||||||
for (query_index, federated_query) in queries.into_iter().enumerate() {
|
for (query_index, federated_query) in queries.into_iter().enumerate() {
|
||||||
let query_uid = Uuid::now_v7();
|
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)?
|
partitioned_queries.partition(federated_query, query_index, &network, features)?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -841,6 +841,7 @@ pub struct SearchHit {
|
|||||||
#[schema(rename_all = "camelCase")]
|
#[schema(rename_all = "camelCase")]
|
||||||
pub struct SearchMetadata {
|
pub struct SearchMetadata {
|
||||||
pub query_uid: Uuid,
|
pub query_uid: Uuid,
|
||||||
|
pub index_uid: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Clone, PartialEq, ToSchema)]
|
#[derive(Serialize, Clone, PartialEq, ToSchema)]
|
||||||
@@ -1143,6 +1144,7 @@ pub fn perform_search(
|
|||||||
request_uid: Uuid,
|
request_uid: Uuid,
|
||||||
) -> Result<SearchResult, ResponseError> {
|
) -> Result<SearchResult, ResponseError> {
|
||||||
let before_search = Instant::now();
|
let before_search = Instant::now();
|
||||||
|
let index_uid_for_metadata = index_uid.clone();
|
||||||
let rtxn = index.read_txn()?;
|
let rtxn = index.read_txn()?;
|
||||||
let time_budget = match index.search_cutoff(&rtxn)? {
|
let time_budget = match index.search_cutoff(&rtxn)? {
|
||||||
Some(cutoff) => TimeBudget::new(Duration::from_millis(cutoff)),
|
Some(cutoff) => TimeBudget::new(Duration::from_millis(cutoff)),
|
||||||
@@ -1163,7 +1165,7 @@ pub fn perform_search(
|
|||||||
query_vector,
|
query_vector,
|
||||||
},
|
},
|
||||||
semantic_hit_count,
|
semantic_hit_count,
|
||||||
) = search_from_kind(index_uid, search_kind, search)?;
|
) = search_from_kind(index_uid.clone(), search_kind, search)?;
|
||||||
|
|
||||||
let SearchQuery {
|
let SearchQuery {
|
||||||
q,
|
q,
|
||||||
@@ -1260,7 +1262,7 @@ pub fn perform_search(
|
|||||||
used_negative_operator,
|
used_negative_operator,
|
||||||
semantic_hit_count,
|
semantic_hit_count,
|
||||||
request_uid: Some(request_uid),
|
request_uid: Some(request_uid),
|
||||||
metadata: Some(SearchMetadata { query_uid }),
|
metadata: Some(SearchMetadata { query_uid, index_uid: index_uid_for_metadata }),
|
||||||
};
|
};
|
||||||
Ok(result)
|
Ok(result)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user