Skip to content

Releases: meilisearch/meilisearch-dart

v0.16.0 🎯

11 Mar 17:02
1d22b74
Compare
Choose a tag to compare

This version introduces features released on Meilisearch v1.7.0 🎉
Check out the changelog of Meilisearch v1.7.0 for more information on the changes.

⚠️ Breaking changes

  • scoreDetails feature is not experimental anymore. You can directly use showRankingScoreDetails during a search without activating the experimental feature 🎉

🚀 Enhancements

⚙️ Maintenance/misc

v0.15.0 🎯

14 Sep 14:16
d110365
Compare
Choose a tag to compare

Checkout the full CHANGELOG here: https://github.com/meilisearch/meilisearch-dart/blob/main/CHANGELOG.md

⚠️ Breaking changes

🚀 Enhancements

Thanks again to @ahmednfwela, @brunoocasali, @curquiza, @justkahdri, @meili-bors[bot] ! 🎉

v0.14.0 🎯

06 Jun 19:26
0a33f19
Compare
Choose a tag to compare

This version introduces features released on Meilisearch v1.2.0 🎉
Check out the changelog of Meilisearch v1.2.0 for more information on the changes.
⚠️ If you want to adopt new features of this release, update the Meilisearch server to the according version.

Check the complete CHANGELOG here: https://github.com/meilisearch/meilisearch-dart/blob/main/CHANGELOG.md

💥 Breaking changes

  • The method deleteDocuments() now supports a different behavior. This method now takes a DeleteDocumentsQuery, which could contain the filter or the ids (aka old behavior). #318 @ahmednfwela

    ⚠️ You must configure the attributes you want to filter using the MeiliSearchIndex.filterableAttributes().
    ⚠️ Remember to update your Meilisearch server to v1.2.0 or newer before adopting it.

    Still, even being supported, the ability to receive only a list of ids is deprecated, and it will be removed soon.

    // from:
    - Future<Task> deleteDocuments(List<Object> ids)
    + Future<Task> deleteDocuments(DeleteDocumentsQuery query)
    
    // to:
    - index.deleteDocuments([456, 4])
    + index.deleteDocuments(DeleteDocumentsQuery(ids: [456, 4]))
  • Add the ability to set filter in the DocumentsQuery. When a query with a filter is sent to getDocuments(params: DocumentsQuery) it will filter the documents like the search method. See the docs on how to use filters. #318 @ahmednfwela

    ⚠️ You must configure the attributes you want to filter using the MeiliSearchIndex.filterableAttributes().
    ⚠️ Remember to update your Meilisearch server to v1.2.0 or newer before adopting it.

  • MeiliSearchIndex.search now takes a String query and a SearchQuery object as the only inputs. #310 @ahmednfwela

    • Replace any occurrence of search index.search('xyz', ....) with index.search('xyz', SearchQuery(....))
    - await client.index('books').search('query', sort: [], filter: ...);
    + await client.index('books').search('query', SearchQuery(sort: [], filter: ...));
  • Meili.geoBoundingBox and Meili.geoRadius now take record values to represent the lat/lng points: #310 @ahmednfwela

    // Confusing, unclear
    - Meili.geoBoundingBox(3,5.3,10,20)
    // Not Confusing :)
    + Meili.geoBoundingBox((lat: 3, lng: 5.3), (lat: 10, lng: 20))
    // Confusing, unclear
    - Meili.geoRadius(3, 5.3, 100)
    // Not Confusing :)
    + Meili.geoRadius((lat: 3, lng: 5.3), 100)
  • Change MultiSearchQuery.queries to be a List<IndexSearchQuery> instead of a List<SearchQuery>: #310 @ahmednfwela

    final result = await client.multiSearch(MultiSearchQuery(queries: [
    -      SearchQuery(
    +      IndexSearchQuery(
              query: "",
              indexUid: index1.uid,
            ),
    -    SearchQuery(
    +    IndexSearchQuery(
              query: "",
              indexUid: index2.uid,
            ),
    ];

Enhancements:

  • Introduce a new annotation RequiredMeiliServerVersion which documents the version these members were introduced. #310 @ahmednfwela
  • Introduce filter expressions for IS NULL, IS NOT NULL, IS EMPTY, IS NOT EMPTY. #310 @ahmednfwela
  • Added filter, filterExpression parameter to DocumentsQuery. #310 @ahmednfwela
  • Some internal Queryable refactoring to unify its behavior and avoid duplicating the code. #310 @ahmednfwela
  • Added a workaround for meilisearch/meilisearch#3740 by jsonEncoding attribute names when using filterExpressions #310 @ahmednfwela
  • A new type is introduced IndexSearchQuery which extends SearchQuery. #310 @ahmednfwela

Thanks again to @brunoocasali, @ahmednfwela! 🎉

v0.13.0 🎯

17 May 18:48
34f6c58
Compare
Choose a tag to compare

⚠️ Breaking changes

💅 Misc

Thanks again to @ahmednfwela and @brunoocasali! 🎉

v0.12.0 🎯

02 May 18:04
b9d8e86
Compare
Choose a tag to compare

This version introduces features released on Meilisearch v1.1.0 🎉
Check out the changelog of Meilisearch v1.1.0 for more information on the changes.

⚠️ Breaking changes

  • Add proper types for facetStats, facetDistributions, and matchesPosition (#296) @ahmednfwela

🚀 Enhancements

Thanks again to @ahmednfwela, @brunoocasali, @curquiza! 🎉

v0.11.1 🎯

27 Apr 13:17
e878c6d
Compare
Choose a tag to compare

🐛 Bug Fixes

Thanks again to @ahmednfwela, @brunoocasali ! 🎉

v0.11.0 🎯

27 Apr 09:00
ce5d565
Compare
Choose a tag to compare

⚠️ Breaking changes

🚀 Enhancements

Thanks again to @ahmednfwela, @brunoocasali ! 🎉

v0.10.2 🎯

24 Apr 08:24
0e1063d
Compare
Choose a tag to compare

🚀 Enhancements

Thanks again to @ahmednfwela, @brunoocasali ! 🎉

v0.10.1 🎯

24 Mar 13:22
26c03ba
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Fixes Index#getTasks when trying to modify the existing indexUids (#274) @ahmednfwela

Thanks again to @ahmednfwela! 🎉

v0.10.0 🎯

22 Mar 18:43
f763b22
Compare
Choose a tag to compare

🚀 Enhancements

  • Add pagination settings methods Future<Pagination> getPagination(), Future<Task> resetPagination(), Future<Task> updatePagination(Pagination pagination) on Index instances. (#264) @ahmednfwela
  • Add faceting settings methods Future<Faceting> getFaceting(), Future resetFaceting(), Future updateFaceting(Faceting faceting) on Index instances. (#265) @ahmednfwela
  • Add typo tolerance settings methods Future<TypoTolerance> getTypoTolerance(), Future<Task> resetTypoTolerance(), Future<Task> updateTypoTolerance(TypoTolerance typoTolerance) on Index instances. (#263) @ahmednfwela
  • Add filter-builder style: (#252) @ahmednfwela
    • Added filterExpression parameter to the search method, which takes a MeiliOperatorExpressionBase, you can only use the new parameter or the regular filter parameter, but not both. If both are provided, filter parameter will take priority.
    • Added new facade class Meili which contains static methods to help create filter expressions.
    • Added extension method toMeiliAttribute() to String, which is equivalent to Meili.attr.
    • Added extension method toMeiliValue() to String, num, DateTime, bool, which are equivalent to Meili.value.
      • Example: This query index.search('prince', filterExpression: Meili.eq(Meili.attribute('tag'), Meili.value("Tale"))); is the same as index.search('prince', filter: "tag = Tale").
  • Add Future<List<Task>> addDocumentsInBatches(List<Map<String, Object?>> documents, { int batchSize = 1000, String? primaryKey }) to Index instances.
  • Add Future<List<Task>> updateDocumentsInBatches(List<Map<String, Object?>> documents, { int batchSize = 1000, String? primaryKey }) to Index instances.
  • Add support to create documents from ndJson and CSV formats directly from Index with addDocumentsNdjson, addDocumentsCsv, updateDocumentsNdjson, and updateDocumentsCsv methods. (#261, #262) @ahmednfwela
  • Add support for Dio adapter customization with MeiliSearchClient.withCustomDio(url, apiKey: "secret", interceptors: [interceptor]) (e.g: you can use this to inject custom code, support to HTTP/2 and more) (#266) @ahmednfwela

Special thanks to @ahmednfwela 🎉