Skip to content

Releases: meilisearch/meilisearch

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

v1.4.0-rc.1 🦓

07 Sep 15:00
b9ad59c
Compare
Choose a tag to compare
v1.4.0-rc.1 🦓 Pre-release
Pre-release

Bug fixes

v1.3.3 🦁

07 Sep 11:38
256cf33
Compare
Choose a tag to compare

Bug fixes

Thank you very much @benjamin-cizej and @ahmednfwela for the bug reports 🙏

v1.4.0-rc.0 🦓

28 Aug 14:39
3dda176
Compare
Choose a tag to compare
v1.4.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.4 improves the search result relevancy by introducing three new settings: nonSeparatorTokens, separatorTokens and dictionary.

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 🐞

Misc

❤️ Thanks again to our external contributors: