Make the search for facet work

This commit is contained in:
Clément Renault 2023-04-26 11:55:43 +02:00 committed by Louis Dureuil
parent ce7e7f12c8
commit e81809aae7
No known key found for this signature in database
3 changed files with 17 additions and 12 deletions

View file

@ -119,7 +119,7 @@ pub async fn search(
) -> Result<HttpResponse, ResponseError> {
let index_uid = IndexUid::try_from(index_uid.into_inner())?;
let mut query = params.into_inner();
let query = params.into_inner();
debug!("facet search called with params: {:?}", query);
let facet_query = query.facet_query.clone();

View file

@ -14,7 +14,9 @@ use meilisearch_types::error::deserr_codes::*;
use meilisearch_types::heed::RoTxn;
use meilisearch_types::index_uid::IndexUid;
use meilisearch_types::milli::score_details::{ScoreDetails, ScoringStrategy};
use meilisearch_types::milli::{dot_product_similarity, FacetSearchResult, InternalError};
use meilisearch_types::milli::{
dot_product_similarity, facet, FacetSearchResult, InternalError, SearchForFacetValue,
};
use meilisearch_types::settings::DEFAULT_PAGINATION_MAX_TOTAL_HITS;
use meilisearch_types::{milli, Document};
use milli::tokenizer::TokenizerBuilder;
@ -575,16 +577,19 @@ pub fn perform_search(
pub fn perform_facet_search(
index: &Index,
search_query: SearchQuery,
facet_query: Option<String>,
mut facet_query: Option<String>,
facet_name: String,
) -> Result<Vec<FacetSearchResult>, MeilisearchHttpError> {
let before_search = Instant::now();
let rtxn = index.read_txn()?;
let (search, is_finite_pagination, max_total_hits, offset) =
prepare_search(index, &rtxn, &search_query)?;
let (search, _, _, _) = prepare_search(index, &rtxn, &search_query)?;
let mut facet_search = SearchForFacetValue::new(facet_name, search);
if let Some(facet_query) = facet_query.take() {
facet_search.query(facet_query);
}
todo!("Execute the search")
facet_search.execute().map_err(Into::into)
}
fn insert_geo_distance(sorts: &[String], document: &mut Document) {