Skip to content

v0.29.0 🦔

Compare
Choose a tag to compare
@curquiza curquiza released this 03 Oct 11:49
fa31535

⚠️ If you have a compatibility issue with libc (for example, with Debian 10) use v0.29.1 instead. See this issue.

This release includes a much-requested feature: an option to require all query terms to be present in search results. The absence of this feature prevented some users from upgrading to newer Meilisearch versions. Additionally, v0.29 contains several indexing speed improvements.

🧰 Most integrations (SDKs, clients, libraries) will be compatible with this version within four hours of the release. Sometimes this can take up to 24 hours, depending on the issues we encounter during the release.

Here is the exhaustive list of integrations not compatible with v0.29.0:

  • meilisearch-dart and meilisearch-swift: though you can use still use both libraries with v0.29.0, the matchingStrategy feature is not yet available. Let us know if you really need it—and contributions are always welcome!
  • meilisearch-java: Our team is still working on refactoring the code, and the SDK cannot be used with v0.29.0. Follow the repository to know when it will be compatible.

New features and improvements 🔥

Customize matching strategy

It is now possible to control how Meilisearch matches documents during search by choosing to return only documents containing all query terms.

How to activate it?

curl \
  -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  --data-binary '{ "q": "american ninja", "matchingStrategy": "all" }'

By setting "matchingStrategy": "all" In the above example, we ensure Meilisearch will only return documents containing both "american" AND "ninja".

Meilisearch's default matching strategy is last. It will still return documents containing all the query words, followed by documents that don't contain all the query words.

Check out the documentation for more information on matchingStrategy.

Made by @ManyTheFish in #2578 and meilisearch/milli#598.

Thai language support

Meilisearch now offers optimized support for Thai 🇹🇭

Want optimized support for your language? Consider contributing to the Meilisearch tokenizer by following the CONTRIBUTING.md file and integrating your intended normalizer/segmenter.

The core team is always happy to help our contributors. Do drop us a line if you need us to clarify anything!

Made by our dear contributor @aFluffyHotdog and by @ManyTheFish in meilisearch/charabia#114, meilisearch/charabia#115, meilisearch/milli##611, and #2636.

Performance improvements for indexing

We improved Meilisearch's indexing speed, especially for indexes using filterableAttributes and when updating and deleting documents.

For more information on the main improvements, check out the following issues: meilisearch/product#513 and meilisearch/product#520.

Made by @loiclec and @irevoire in #2689, #2690, meilisearch/milli#607, meilisearch/milli#606, meilisearch/milli#587, meilisearch/milli#557,meilisearch/milli#579, and meilisearch/milli#590.

Filtering: introduce the EXISTS and IN operators

You can now use the EXISTS and IN operators with the filter search parameter during search.

With the following set of documents:

{ "id": 1, "product": "T-shirt", "price": 20, "color": "yellow" }
{ "id": 2, "product": "T-shirt",              "color": "red" }
{ "id": 3, "product": "T-shirt", "price": 30 }
{ "id": 4, "product": "T-shirt", "price": 40 }
  • The filter price EXISTS will select documents 1, 3, and 4.
  • The filter price IN [30, 20] will select documents 1 and 3.

These operators can be combined with the existing NOT (!=) operator.
Read more about filtering in Meilisearch's documentation.

Made by @loiclec in #2636, meilisearch/milli#596, and meilisearch/milli#556.

Key management

When managing keys, the * helper can now be used to express a set of actions in the actions array.

For example, instead of specifying indexes.create, indexes.get, indexes.update, indexes.delete; you can now use indexes.*.

Made by our dear contributors @Mcdostone and @phdavis1027 in #2080 and #2579.

Behavior changes ⚠️

Auto-batching

This previously experimental feature is now enabled by default.

If you enabled auto-batching in previous versions using --enable-auto-batching, remove this flag when running Meilisearch v0.29.0. All other auto-batching settings (--debounce-duration-sec, --max-batch-size, and --max-documents-per-batch) have been removed.

If you did not enable auto-batching before, the transition should be seamless and increase indexing speed 🏎️

If you experience any issues during indexing, try using --disable-auto-batching flag (or the environment variable MEILI_DISABLE_AUTO_BATCHING).

Made by @Kerollmops in meilisearch/milli#561, #2523, and #2677.

!= (NOT) filter operator

This behavior change is consistent with the EXISTS and IN operators. The NOT filter now also matches documents missing the specified attributes.
More explanation with examples here.

Made by @loiclec in #2636, and meilisearch/milli#596.

Fixes 🐞

Misc

❤️ Thanks again to our external contributors: