Skip to content

v0.27.0

Compare
Choose a tag to compare
@curquiza curquiza released this 09 May 09:37
cd2239e

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"

Done by @irevoire (#2211)

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 a typoTolerance 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 using meilisearch (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

Fixes

Misc


❤️ Thanks again to our external contributors: