MeiliSearch/milli
meili-bors[bot] be72be7c0d
Merge #3942
3942: Normalize for the search the facets values r=ManyTheFish a=Kerollmops

This PR improves and fixes the search for facet values feature. Searching for _bre_ wasn't returning facet values like _brévent_ or _brô_.

The issue was related to the fact that facets are normalized but not in the same way as the `searchableAttributes` are. We decided to normalize them further and add another intermediate database where the key is the normalized facet value, and the value is a set of the non-normalized facets. We then use these non-normalized ones to get the correct counts by fetching the associated databases.

### What's missing in this PR?
 - [x] Apply the change to the whole set of `SearchForFacetValue::execute` conditions.
 - [x] Factorize the code that does an intermediate normalized value fetch in a function.
 - [x] Add or modify the search for facet value test.

Co-authored-by: Clément Renault <clement@meilisearch.com>
Co-authored-by: Kerollmops <clement@meilisearch.com>
2023-07-25 14:37:17 +00:00
..
examples Expose a new vector field on the search route 2023-06-27 12:32:38 +02:00
src Merge #3942 2023-07-25 14:37:17 +00:00
tests Move the sortFacetValuesBy in the faceting settings 2023-06-29 14:33:31 +02:00
Cargo.toml Replace the hnsw crate by the instant-distance one 2023-07-25 12:37:35 +02:00
README.md Add a README to the milli crate 2023-01-16 16:25:12 +01:00

the milli logo

a concurrent indexer combined with fast and relevant search algorithms

Introduction

This crate contains the internal engine used by Meilisearch.

It contains a library that can manage one and only one index. Meilisearch manages the multi-index itself. Milli is unable to store updates in a store: it is the job of something else above and this is why it is only able to process one update at a time.