v0.27.0
This version of Meilisearch introduces two much-requested features:
- Full support for nested document fields
- Typo tolerance configuration
v0.27 also addresses some of our previous indexation performance issues.
Please consider using this version and share your feedback on this GitHub discussion.
When settings your filterableAttributes: "filterableAttributes": ["person.firstname"]
Then, when filtering during the search: "filter": "person.firstname = Gui"
New features
Nested field support
Meilisearch now fully supports nested document fields. This allows users to use a nested field location in any API parameter accepting document attributes using dot notation.
Example
- When settings your
fileterableAttributes
: ``"filterableAttributes": ["person.firstname"]` - Then, when filtering during the search:
"filter": "person.firstname = Gui"
Customize typo tolerance
You can customize typo tolerance with the new typoTolerance
setting endpoints:
- settings (
/indexes/:index_uid/settings
) - typo-tolerance settings (
/indexes/:index_uid/settings/typo-tolerance
)
The new API endpoints accept a typoTolerance
object with the following properties:
enabled
: Whether the typo tolerance feature is enabled. (Default:true
)disableOnAttributes
: Disable typo tolerance on specified document attributes. (Default:[]
)disableOnWords
: Disable typo tolerance for a set of query terms given during search. (Default:[]
)minWordSizeForTypos
:oneTypo
: Customize the minimum size for a word to tolerate 1 typo. (Default:5
)twoTypos
: Customize the minimum size for a word to tolerate 2 typos.(Default:9
)
Improve cropping/highlighting
v0.27 allows you to customize the tags used when highlighting query terms and the crop markers when cropping long field values:
highlightPreTag
: set the tag to be inserted before the highlighted query terms. (Default:<em>
)highlightPostTag
: set the tag to be inserted after the highlighted query terms. (Default:</em>
)cropMarker
: set the crop marker to insert around the cropped field value. (Default:...
)
Other changes:
cropLength
is now a number of words instead of a number of characters
Done by @ManyTheFish (#2214)
Add Japanese support
New language support: Japanese, via the Lindera tokenizer.
Thanks to the community for this integration.
Done by @miiton, @djKooks, @mosuka and @ManyTheFish (#2185)
New instance options
New instance options for limiting RAM and CPU usage during indexation:
--max-indexing-memory
(MEILI_MAX_INDEXING_MEMORY
): Sets the maximum RAM size during indexation--max-indexing-threads
(MEILI_MAX_INDEXING_THREADS
): Sets the maximum number of threads available for use during indexation
Done by the amazing @2shiori17 in #2267
Breaking changes
- Stabilize and improve cropping behavior:
cropLength
is now a number of words instead of a number of characters (#2214) @ManyTheFish - Typo tolerance behavior changes: a typo on the first letter will count as 2 typos. This reduces the possibilities during the search regarding the typo tolerance feature and thus make Meilisearch faster as search time in this case. Indeed, users rarely get the first letter wrong. (milli#439) @MarinPostma
- Add a hard limit of
1000
retrievable documents during search (GET/POST /indexes/:uid/search
) (#2281) @Kerollmops- When calling this endpoint, Meilisearch will not return more than 1000 documents. This limit is a security fix to avoid scraping the Meilisearch DB
- If you still want to browse your own DB and retrieve all your documents, the
GET /indexes/:uid/documents
route is still usable since this limit is not applied to it
- Docker now launches from a different working directory. This means you must mount your volume in
/meili_data
. The new API endpoints for typo tolerance accept atypoTolerance
object with the following properties:
docker run -it --rm \
-p 7700:7700 \
-v $(pwd)/meili_data:/meili_data \
getmeili/meilisearch:latest
- Following Docker best practices, we have moved the
meilisearch
binary. You may now call the binary usingmeilisearch
(recommended),/meilisearch
, or/bin/meilisearch
:
✅ Correct
docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest meilisearch --no-analytics
❌ Wrong
docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --no-analytics
Other improvements
- Improve indexation time when inserting documents (#2203) @Kerollmops @MarinPostma
- Improve
sortableAttributes
andfilterableAttributes
error messages during search (#2140) @brunoocasali - Upgrade dependencies of the Meilisearch, Milli and Tokenizer repositories (#2237) @Kerollmops
Fixes
- Fix kernel panic when sending a document update without content type header (#2277) @MarinPostma
- Avoid embedding user input into error response (#2207) @CNLHC
- Re-introduce the
--version
flag on the Rust binary (#2316) @sanders41 - Fix error message caused by importing a dump when a DB is already present (#2356) @MarinPostma
- Fix wrong
nbHits
value when using distinct attribute (meilisearch/milli#489) @MarinPostma
Misc
- Change of the document order for the placeholder search (#2298) @irevoire
- Simplify Docker usage (#2271) @Thearas
- Refactor authentication key extraction (#2253) @MarinPostma
- Cargo: use resolver 2 (#2238) @happysalada
- Use milli's heed dependency (#2228) @psvnlsaikumar
- Add test to validate cli (#2245) @MarinPostma
- Add tests with default CLI opts (#2254) @Kerollmops
- Minor change on our CIs (#2233) @curquiza
- Upgrade the configuration of issue management (#2263) @curquiza
- Update mini-dashboard version (#2334) @mdubus
❤️ Thanks again to our external contributors:
- Meilisearch: @2shiori17, @CNLHC, @happysalada, @psvnlsaikumar, @sanders41 and @Thearas
- Milli: @psvnlsaikumar
- Tokenizer: @djKooks, @miiton, @mosuka, and @Thearas