meilisearch @ v1.50.0
integrity
- size
- 20.4 MiB
- downloaded
- last checked
release notes
Meilisearch v1.50 revamps the Dynamic Search Rules, adds support for federated document fetch in sharded configurations, among other improvements
Breaking changes
This release introduces breaking changes for users using some experimental features
dynamicSearchRules experimental feature
Request type changes
priorityhas been replaced withprecedence, which better reflects the behavior (lower precedence means the rule is applied first)conditionshas been modified from an array to an object with two fields: "query" of typeQueryConditionand "time" of timeTimeCondition- New type
QueryConditionthat contains the fieldsisEmpty(as previously) andwordsinstead ofcontains(same type) - It is now possible to pass
isEmpty: falsewithwordsin aQueryCondition. PassingisEmpty:truewithwordsstill results in a synchronous error. - New type
TimeConditionwith fieldsstartandend(unchanged semantics from previous type). - When specifying the
selectorof anAction, it is now mandatory to specify anid. Previously, it was optional, but the action would never trigger. - When listing rules with
POST /dynamic-search-rules,filter.attributePatternshas been replaced withfilter.query, an optional string that searches in ruledescriptionandconditions.query.words. - When calling
DELETE /dynamic-search-rules/{:ruleUid}orPATCH /dynamic-search-rules/{:ruleUid}in a sharded configuration, endpoint will not return a HTTP 400 error if called on a follower remote rather than on the leader.
Response changes
PATCH /dynamic-search-rules/{:ruleUid}andDELETE /dynamic-search-rules/{:ruleUid}now register an asynchronous task..- The response is modified to return the registered task instead of the modified dynamic search rule.
- HTTP 404 is no longer returned if the
{:ruleUid}portion of the URL refers to a rule that doesn't exist. This is because rules are processed asynchronously, and is consistent with the behavior ofDELETE /indexes/{:indexUid}/documents/{:docId}for{:docId}
network experimental feature
🌈 Improvements
Scaling up the Dynamic Search Rules
- Dynamic search rules scale up to 75K rules without any impact on the search
- The API of Dynamic Search Rules has been simplified
- It is harder to send conditions that will result in the rules never activating
- This also unlocks future improvements such as filter activation conditions for search rules
Additions
- Add a new
DELETE /dynamic-search-ruleroute that deletes all the DSRs - Add the concept of "DSR fuel" that determines how much energy is spent resolving DSR during a search. The fuel is initialized with some default variables that can be overridden using environment variables:
MEILI_EXPERIMENTAL_DSR_FUEL_MAX_COUNTED_WORDS: max number of words considered inside of a search query for the purpose of findingconditions.query.wordsconstraints. Defaults to 10, max value is 255MEILI_EXPERIMENTAL_DSR_FUEL_MAX_ACTIVE_RULES: max number of active rules whose actions are evaluated. Defaults to 1000, max value is 4294967295MEILI_EXPERIMENTAL_DSR_FUEL_MAX_PIN_ACTIONS: max number of pin actions that are applied. Defaults to 100, max value is 4294967295MEILI_EXPERIMENTAL_DSR_FUEL_WORD_FUEL: max number of constraint combinations that are evaluated for the purpose of findingconditions.query.wordsconstraints. Defaults to 4096, max value is 4294967295
By @dureuill in https://github.com/meilisearch/meilisearch/pull/6484 and https://github.com/meilisearch/meilisearch/pull/6506
Behavior changes
- The
conditions.query.wordsbehaves differently fromquery.contains: previously, a rule would match if its conditionsquery.containswould be substrings ofqin the search query in the sense ofstr::contains. Now, a rule matches if all the words inconditions.query.wordsappear inq(after normalization). Forq = hero super,query.contains = super herowould not match, whereasconditions.query.words = super herodoes now match. This behavior is more in line with regular search, and allows improving performance. - Dynamic search rules are now replicated from the leader to its follower, when in a sharded configuration
Federated document fetch routes
by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6495
Support partial wildcards when requesting facets
by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/6497
🦋 Fixes
Fix migration from v1.48 and earlier
by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/6501
Fix filter memory consumption in some cases
- Own parsed filters structure by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6509
No longer reject some correctly-escaped filters
by @dureuill in https://github.com/meilisearch/meilisearch/pull/6499
More fault-tolerant S3 snapshots
by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/6494
🔩 Miscellaneous changes
- Add missing route descriptions for documentation by @curquiza in https://github.com/meilisearch/meilisearch/pull/6500
- Make the prototype docs clearer by @curquiza in https://github.com/meilisearch/meilisearch/pull/6503
- simplify partitioning step by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6511
- Fix frequently failing tests on Windows by @dureuill in https://github.com/meilisearch/meilisearch/pull/6520
Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.49.0...v1.50.0
download
curl -fL -o v1.50.0.zip https://ratatoskr.space/pkg/meilisearch/v1.50.0.zip
printf '%s %s\n' '56168cd7aeedfa3776dd0276b3d03c13fcf1e116cf4528cf6cb083f057b51410' 'v1.50.0.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/meilisearch/v1.50.0.zip"
$out = "v1.50.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "56168cd7aeedfa3776dd0276b3d03c13fcf1e116cf4528cf6cb083f057b51410") { throw "sha256 mismatch" }
curl -fL -o v1.50.0.tar.gz https://ratatoskr.space/pkg/meilisearch/v1.50.0.tar.gz
printf '%s %s\n' '80ea87ec18064c8998e0bd9b32267d74875da1e5373e14e7250ffa5c14b30b88' 'v1.50.0.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/meilisearch/v1.50.0.tar.gz"
$out = "v1.50.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "80ea87ec18064c8998e0bd9b32267d74875da1e5373e14e7250ffa5c14b30b88") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1.50.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.50.0.zip
printf '%s %s\n' '56168cd7aeedfa3776dd0276b3d03c13fcf1e116cf4528cf6cb083f057b51410' 'v1.50.0.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.50.0.zip"
$out = "v1.50.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "56168cd7aeedfa3776dd0276b3d03c13fcf1e116cf4528cf6cb083f057b51410") { throw "sha256 mismatch" }
curl -fL -o v1.50.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.50.0.tar.gz
printf '%s %s\n' '80ea87ec18064c8998e0bd9b32267d74875da1e5373e14e7250ffa5c14b30b88' 'v1.50.0.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.50.0.tar.gz"
$out = "v1.50.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "80ea87ec18064c8998e0bd9b32267d74875da1e5373e14e7250ffa5c14b30b88") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1.50.0.zip | zip | 20.3 MiB |
blake3-24 0c9dce5fec73f2775cd5dcbbbef717381722f896fc072b24
sha256 56168cd7aeedfa3776dd0276b3d03c13fcf1e116cf4528cf6cb083f057b51410
sha1 f0d430c21eab4fe32190b150cf658cc58131f93b
|
| v1.50.0.tar.gz | tar.gz | 19.4 MiB |
blake3-24 bcc18c618f102c1350edd36074e01480f3dfda53dbf878ad
sha256 80ea87ec18064c8998e0bd9b32267d74875da1e5373e14e7250ffa5c14b30b88
sha1 cb61e18a2151433713d5f1ac79d728430d7461bd
|
install
http_archive(
name = "meilisearch",
urls = ["https://ratatoskr.space/pkg/meilisearch/v1.50.0.tar.gz"],
integrity = "sha256-gOqH7BgGTImY4L2bMiZ9dIddoeU3PhTnJQ/6XBSzC4g=",
strip_prefix = "meilisearch-v1.50.0",
)
.url = "https://ratatoskr.space/pkg/meilisearch/v1.50.0.tar.gz",
install via yggdrasil mesh
http_archive(
name = "meilisearch",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.50.0.tar.gz"],
integrity = "sha256-gOqH7BgGTImY4L2bMiZ9dIddoeU3PhTnJQ/6XBSzC4g=",
strip_prefix = "meilisearch-v1.50.0",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/meilisearch/v1.50.0.tar.gz",