From 0dcbd2fe07d95e2a6b071751d9a91f4bec06ee87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Renault?= Date: Tue, 17 Dec 2024 16:25:53 +0100 Subject: [PATCH] Fix the usage of compressed documents --- crates/meilisearch/src/search/mod.rs | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/crates/meilisearch/src/search/mod.rs b/crates/meilisearch/src/search/mod.rs index c3eb3ef08..c1c0b0538 100644 --- a/crates/meilisearch/src/search/mod.rs +++ b/crates/meilisearch/src/search/mod.rs @@ -1327,26 +1327,13 @@ impl<'a> HitMaker<'a> { } pub fn make_hit(&self, id: u32, score: &[ScoreDetails]) -> milli::Result { - let (_, obkv) = - self.index.iter_documents(self.rtxn, std::iter::once(id))?.next().unwrap()?; + let mut buffer = Vec::new(); + let dict = self.index.document_decompression_dictionary(self.rtxn)?; + let compressed = self.index.compressed_document(self.rtxn, id)?.unwrap(); + let doc = compressed.decompress_with_optional_dictionary(&mut buffer, dict.as_ref())?; - // let mut formatter_builder = MatcherBuilder::new(matching_words, tokenizer_builder.build()); - // formatter_builder.crop_marker(format.crop_marker); - // formatter_builder.highlight_prefix(format.highlight_pre_tag); - // formatter_builder.highlight_suffix(format.highlight_post_tag); - // let decompression_dictionary = index.document_decompression_dictionary(rtxn)?; - // let mut buffer = Vec::new(); - // let mut documents = Vec::new(); - // let embedding_configs = index.embedding_configs(rtxn)?; - // let documents_iter = index.compressed_documents(rtxn, documents_ids)?; - // for ((id, compressed), score) in documents_iter.into_iter().zip(document_scores.into_iter()) { - // let obkv = compressed - // .decompress_with_optional_dictionary(&mut buffer, decompression_dictionary.as_ref()) - // // TODO use a better error? - // .map_err(|e| MeilisearchHttpError::HeedError(e.into()))?; // First generate a document with all the displayed fields - let displayed_document = make_document(&self.displayed_ids, &self.fields_ids_map, obkv)?; - + let displayed_document = make_document(&self.displayed_ids, &self.fields_ids_map, doc)?; let add_vectors_fid = self.vectors_fid.filter(|_fid| self.retrieve_vectors == RetrieveVectors::Retrieve);