Skip to content

Releases: meilisearch/meilisearch

v1.5.0-rc.2 🦙

31 Oct 16:45
54f0ee1
Compare
Choose a tag to compare
v1.5.0-rc.2 🦙 Pre-release
Pre-release

Enhancement

  • Integrate the meilitool command line interface in the meilisearch Docker image (#4167) @Kerollmops
    In the running Meilisearch container, just do meilitool --help to get the usage.

v1.5.0-rc.1 🦙

30 Oct 12:23
2614e7d
Compare
Choose a tag to compare
v1.5.0-rc.1 🦙 Pre-release
Pre-release

Enhancement

Fixes

  • Update the version to the right release (v1.5.0 instead of v1.4.0) (#4154)
  • Fix warning in CI (#4174) @irevoire

Thanks @choznerol and @xshadowlegendx for the contributions on Charabia ❤️

v1.5.0-rc.0 🦙

23 Oct 11:15
e4c24ca
Compare
Choose a tag to compare
v1.5.0-rc.0 🦙 Pre-release
Pre-release

⚠️ Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

Meilisearch v1.5 introduces improvements in indexing speed and the possibility of triggering snapshots on-demand, as it's already possible with dumps.

New features and improvements 🔥

Indexing speed improvements

For datasets containing a lot of words (and/or with a large variety of words), we improved the indexing speed between 5% and 20%, depending on your use cases and your documents. The more your documents contain a lot of words, the more the improvements will be visible.

The relevancy can be slightly different for queries containing 4 words or more. Let us know here if you have any issues or unexpected behavior.

For datasets containing only a few words per field, even if you have a huge number of fields, the improvement might not be visible. Don't worry, we keep working on the indexing speed in the next sprint to address other use cases.

Done by @ManyTheFish in #4131

Snapshots on-demand

We have introduced a new route, similar to the /dumps one, creating snapshots on-demand.

To create a snapshot:

curl -X POST HTTP://localhost:7700/snapshots

This route will return a task.

The snapshot file will be created on your machine in the directory defined with --snapshot-dir flag (default: snapshots/)

Done by @irevoire in #4051.

Experimental feature: export Puffin Reports

Enabling this experimental feature will make Meilisearch automatically export .puffin file reports. Analyzing those files can give great information on what's happening inside the engine and how the Meilisearch team can improve the indexing performances.

How to activate the feature:

curl \
  -X PATCH 'http://localhost:7700/experimental-features/' \
  -H 'Content-Type: application/json'  \
--data-binary '{
    "exportPuffinReports": true
  }'

📣 To get more information about the feature or to give any feedback, please refer to this discussion.

Done by @Kerollmops in #4073.

Other improvements

Misc

  • Dependencies upgrade for security reasons
    • Bump webpki to 0.22.2 (#4101)
    • Bump rustls-webpki from 0.100.1 to 0.100.2 (#4009)
  • CIs and tests
  • Misc

❤️ Thanks again to our external contributors:

v1.4.2 🦓

19 Oct 15:15
1032d82
Compare
Choose a tag to compare

Bug fix

  • Regression introduced in v1.4.1: fix search bug with distinct attribute and page/hitsPerPage (#4140) @vivek-26

Thanks @pespantelis, for the bug report, and @vivek-26 for the implementation ❤️

v1.4.1 🦓

12 Oct 08:42
f343ef5
Compare
Choose a tag to compare

Bug fixes 🐞

  • Improve indexing speed when importing a dump by using a bufreader and bufwriter everytime there is a grenad<File> (#4089) @irevoire
  • Fix bug where search with distinctAttribute and pagination with offset and limit (#4108) @vivek-26

Thanks again to @vivek-26 who fixed an old bug present since v1.3.2 🎉

v1.3.5 🦁

20 Sep 07:31
6b8b606
Compare
Choose a tag to compare

Bug fixes

  • Revert the fix on the filters about escaping sequences by @Kerollmops in #4069

⚠️ This only purpose of this release is to revert a bug fix we made in v1.3.3. Indeed #4038 fixes a bug preventing the use \ character at the end of a value in the filter search parameter. Unfortunately, this bug fix introduced a breaking in the filter usage: forcing to escape each \. We shouldn't have released this kind of bug fix in a patch version.
If you are already using v1.3.3 or v1.3.4 and your filter works without any issue, not need to upgrade to v1.3.5.

v1.3.4 🦁

12 Sep 14:53
8822ca2
Compare
Choose a tag to compare

Bug fix

⚠️ You have to re-index your dataset: the easiest way is to create a dump and import this dump into v1.3.4 when starting it

v1.2.1 🐻‍❄️

13 Sep 08:41
541f36f
Compare
Choose a tag to compare

Bug fix

⚠️ You have to re-index your dataset: the easiest way is to create a dump and import this dump into v1.2.1 when starting it

v1.4.0 🦓

25 Sep 08:04
76c05d1
Compare
Choose a tag to compare

Meilisearch v1.4 improves the search result relevancy by introducing three new settings: nonSeparatorTokens, separatorTokens and dictionary.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features—consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

New features and improvements 🔥

Customize text separators

Meilisearch word segmentation uses a list of characters to separate one word from another. The nonSeparatorTokens and separatorTokens index settings allow you to configure this to better fit your dataset.

Add a character to the separator-tokens list to use it as a word separator:

curl \
  -X PUT 'http://localhost:7700/indexes/articles/settings/separator-tokens' \
  -H 'Content-Type: application/json'  \
  --data-binary '["&sect;", "&sep"]'

Add a character to the non-separator-tokens list when you don't want Meilisearch to use it to separate words:

curl \
  -X PUT 'http://localhost:7700/indexes/articles/settings/non-separator-tokens' \
  -H 'Content-Type: application/json'  \
  --data-binary '["@", "#", "&"]'

Done by @ManyTheFish in #3946

Load user-defined dictionaries

Meilisearch word segmentation also relies on language-based dictionaries to segment words. Use the dictionary index setting to expand the default dictionaries and improve accuracy when working with datasets using domain-specific terms:

curl \
  -X PUT 'http://localhost:7700/indexes/articles/settings/dictionary' \
  -H 'Content-Type: application/json'  \
  --data-binary '["J. R. R.", "J.R.R."]'

This feature can be used together with the stopWords and synonyms index settings:

{
    "dictionary": ["J. R. R.", "J.R.R."],
    "synonyms": {
            "J.R.R.": ["jrr", "J. R. R."],
            "J. R. R.": ["jrr", "J.R.R."],
            "jrr": ["J.R.R.", "J. R. R."],
    }
}

Done by @ManyTheFish in #3946

Other improvements

Meilisearch better hides your data and no longer shows hidden document's fields in error messages. In case you are trying to sort by using a field that is not sortable but there are some of them that are not displayed either, you will see a message like the following:

Available sortable attributes are: price, stock, <..hidden-attributes>.

Done by @vivek-26 in #3945

Fixes 🐞

🔴 Usage breaking change following filter bug fix

⚠️ This section only concerns users using the filter search parameter with \ characters in the filter expression.

In this version, we fixed a bug regarding \ in the filter search parameter expression. Before v1.4.0, the users were not able to express all the filter expression they wanted.

For example, if you add the following documents:

[
  {
    "id": 1,
    "path": "my\\test\\path"
  },
  {
    "id": 2,
    "path": "my\\test\\path\\"
  }
]

(\\ escaping here is about JSON escaping)

Before v1.4.0, if you wanted to filter on document 2, the filters path = "my\\test\\path\\" and path = "my\\test\\path\\\" led to an error.

Now, in v1.4.0, you can express all the possible filter expressions, no matter if the filter contains \ or not. But to reach this, you have to escape all the \ characters in your filter.

Following our example, to finally succeed in filtering on document 2, the filter should be: path = "my\\\\test\\\\path\\\\".

👉 If you come from v1.3.X or before, and you used \ in filter, here is the change to apply: following our example, to filter on document 1, before v1.4.0, you could apply the filter path = "my\\test\\path". Now, from v1.4.0, you have to escape the \ and apply the following filter: path = "my\\\\test\\\\path".
Two escapings are applied: the JSON escaping and the Meilisearch filter escaping. The JSON unescaping transforms the \\\\ into \\ and the Meilisearch filter unescaping ends up with a single \.

If you need any help with this change, please feel free to reach us on our Discord.

Misc

❤️ Thanks again to our external contributors:

v1.4.0-rc.2 🦓

11 Sep 17:16
76c05d1
Compare
Choose a tag to compare
v1.4.0-rc.2 🦓 Pre-release
Pre-release

Bug fixes

  • Fix highlighting bug when searching for a phrase with cropping (#4028) @vivek-26
  • Refactor empty arrays/objects should return empty instead of null (#3997) @dogukanakkaya
  • Fix the stats of the documents deletion by filter (#4053) @irevoire

Misc

  • Bring back hotfixes from v1.3.3 into v1.4.0 (#4043) @curquiza -> v1.4.0 is now up to date with the last bug fixes done by the team