⚠️ 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.9 includes performance improvements for hybrid search and the addition/updating of settings. This version benefits from multiple requested features, such as the new frequency
matching strategy and the ability to retrieve similar documents.
New features and updates 🔥
Hybrid search improvements
Since we're focusing on AI innovation, this version introduces multiple improvements and changes related to hybrid search.
More detailed changelog here.
Done by @dureuill and @irevoire in #4633 and #4649
⚠️ Breaking changes of hybrid search usage
- Before v1.9, an empty array in
_vectors.embedder
used to be interpreted as a single embedding of dimension 0 when specifying embeddings in documents. In v1.9 it is now interpreted as 0 embedding. The previous behavior was surprising and not useful.
Improvements
Meilisearch v1.9.0 improves performance when indexing and using hybrid search, avoiding useless operations and optimizing the important ones.
Get similar documents
To retrieve similar documents in your datasets, two new routes have been introduced
POST /indexes/:indexUid/similar
using parameters in the request body.GET /indexes/:indexUid/similar
, using query URL parameters.
POST /indexes/:indexUid/similar
{
// Mandatory: the external id of the target document
"id": "23",
// Optional, defaults to 0: how many results to skip
"offset": 0,
// Optional, defaults to 20: how many results to display
"limit": 2,
// Optional, defaults to null: an additional filter for the returned documents
"filter": "release_date > 1521763199",
// Optional, defaults to the default embedder: name of the embedder to use
// for computing recommendations.
"embedder": "default",
// Optional, defaults to null: same as the search query parameter of the same name
"attributesToRetrieve": [],
// Both optional, defaults to false: allow displaying the ranking score
// (resp. detailed ranking score)
"showRankingScore": false,
"showRankingScoreDetails": false
}
frequency
matching strategy when searching
A frequency
variant to the matchingStrategy
search parameter has been added. This favors the least frequent query words when retrieving the documents.
curl \
-X POST 'http://localhost:7700/indexes/movies/search' \
-H 'Content-Type: application/json' \
--data-binary '{
"q": "chaval blanc",
"matchingStrategy": "frequency"
}'
Previous existing values for matchingStrategy
are last
and all
(last
is the default value).
Done by @ManyTheFish in #4667
Improve indexing speed when updating/adding settings
Meilisearch now limits operations when importing settings by avoiding useless writing operations in its internal database and by reducing disk usage.
Done by @irevoire and @Kerollmops in #4646, #4656 and #4631
Other improvements
- Prometheus experimental feature: Use HTTP path pattern instead of full path in metrics (#4619) @gh2k
- ⚠️ Remove
exportPuffinReport
experimental feature. Use logs routes and logs modes instead (#4655) @Kerollmops
Fixes 🐞
- When no searchable attributes are declared, all the fields have the same importance instead of being randomly given more importance. More information here (#4631) @irevoire
- Fix
searchableAttributes
behavior with nested fields when they were not explicitly defined. More information here (#4631) @irevoire - Fix security issue in dependency: bump Rustls to non-vulnerable versions (#4622) @Kerollmops
Misc
- CIs and tests
- Documentation
- Misc
❤️ Thanks again to our external contributors: