Meilisearch v1.51.0

v1.51.0

v1.51.0 👽

Added 3
  • Add filter condition to dynamic search rules (DSR) that contains a single values key with a JSON object mapping facet names to filter values for rule activation
  • Add lastUpdatedAt field to dynamic search rules returned by GET /dynamic-search-rules/{:ruleUid} and POST /dynamic-search-rules
  • Add environment variables MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_FUEL, MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_OR_FUEL, MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_AND_FUEL, and MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_DEPTH_FUEL to control DSR fuel behavior
Changed 3
  • Dynamic search rules are now listed in descending lastUpdatedAt order with most recently updated rules first
  • Improve search speed by reducing internal work and retrieving data from disk only once across the entire search pipeline
  • Rename --experimental-dumpless-upgrade flag to --upgrade-db
Fixed 1
  • Restore support for legacy shorthand filterable attributes syntax
Removed 3
  • Remove --experimental-replication-parameters flag
  • Remove --experimental-no-edition-2024-for-dumps flag
  • Remove --experimental-no-snapshot-compaction flag
✨ Enhancement
  • Add filter condition to DSRs by @dureuill in https://github.com/meilisearch/meilisearch/pull/6505

    New filter rule activation condition

    Dynamic search rules (DSR) can now declare a new filter condition: it contains a single values key, whose value is a JSON object. The keys of this values JSON object are the facet names (e.g., color, genres, ...), while their values are the values that a filter must resolve to for these facets, so that the rule is active.

    // PATCH /dynamic-search-rules/test-filter
    
    {
      "conditions": {
        "filter": {
          "values": {
            "color": "red",
            "category": "shirt"
          }
        }
      },
      "actions": [
        {
          "selector": { "id": "red shirt on sales" },
          "action": { "type": "pin", "position": 0 }
        }
      ]
    }
    
    {
      "filter": "(category = shirt AND color = red) OR (category = jeans AND color = blue)"
    }
    

    Note that the filter only needs to have one branch resolving to all the facet values declared in the rule for the rule to be active.

    New lastUpdatedAt field

    Dynamic search rules returned by GET /dynamic-search-rules/{:ruleUid} and POST /dynamic-search-rules contain an additional lastUpdatedAt field.

    This field is automatically updated with the enqueuedAt value of the last task that modified the rule.

    Rules are listed with the most recently updated first

    POST /dynamic-search-rules now lists rules in descending lastUpdatedAt order, meaning that the most recently updated rules will be listed first.

    New environment variables

    New environment variables are defined to control the behavior of the DSR fuel:

    • MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_FUEL (in range 0..4294967296): controls how many filter constraint combinations Meilisearch will attempt to resolve at search time before giving up and applying partial rules.
    • MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_OR_FUEL (in range 0..65536): controls how many filter disjunctions Meilisearch will build when turning a filter to its canonical shape
    • MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_AND_FUEL (in range 0..65536): controls how many filter conjunctions Meilisearch will build in total when turning a filter to its canonical shape
    • MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_DEPTH_FUEL (in range 0..256): controls the maximum recursive depth that Meilisearch allows when turning a filter to its canonical shape
  • Speed up search requests by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/6528 Improves Meilisearch search speed by avoiding unnecessary internal work. We drastically reduced the number of times we retrieve data from disk to a single time across the whole search pipeline. This improvement will have the greatest effect on datasets with a large number of distinct fields across documents. We have seen search speeds up to 5.4x on a dataset with more than 14k different fields.

  • Stabilize dumpless upgrade by @curquiza in https://github.com/meilisearch/meilisearch/pull/6486

    ⚠️ Breaking change following the stabilization of an experimental feature ⚠️

    The flag —-experimental-dumpless-upgrade is renamed —-upgrade-db, keeping the exact same behavior.

  • Remove unused experimental features by @curquiza in https://github.com/meilisearch/meilisearch/pull/6489

    ⚠️ Breaking change: removing the following experimental features ⚠️

🪲 Bug fixes
🔩 Miscellaneous
New Contributors
View original

Upgraded? How did it go?

Discussion