MeiliSearch

MeiliSearch Dart

MeiliSearch | Documentation | Roadmap | Website | Blog | Twitter | FAQ

Pub Version GitHub Workflow Status License Slack

⚡ The MeiliSearch API client written for Dart

MeiliSearch Dart is the MeiliSearch API client for Dart developers. Which you can also use for your Flutter apps as well. MeiliSearch is a powerful, fast, open-source, easy to use and deploy search engine. Both searching and indexing are highly customizable. Features such as typo-tolerance, filters, facets, and synonyms are provided out-of-the-box.

📖 Documentation

See our Documentation or our API References.

🔧 Installation

You can install meilisearch package by adding a few lines into pubspec.yaml file.

dependencies:
  meilisearch: ">=0.0.1 <2.0.0"

Then open your terminal and update dart packages.

$ pub get

Run MeiliSearch

There are many easy ways to download and run a MeiliSearch instance.

For example, if you use Docker:

$ docker pull getmeili/meilisearch:latest # Fetch the latest version of MeiliSearch image from Docker Hub
$ docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey

NB: you can also download MeiliSearch from Homebrew or APT.

🚀 Getting Started

Add Documents

import 'package:meilisearch/meilisearch.dart';

void main() async {
  var client = MeiliSearchClient('http://127.0.0.1:7700', 'masterKey');

  // An index where books are stored.
  var index = await client.createIndex('books', primaryKey: 'book_id');

  var documents = [
    { 'book_id': 123,  'title': 'Pride and Prejudice' },
    { 'book_id': 456,  'title': 'Le Petit Prince' },
    { 'book_id': 1,    'title': 'Alice In Wonderland' },
    { 'book_id': 1344, 'title': 'The Hobbit' },
    { 'book_id': 4,    'title': 'Harry Potter and the Half-Blood Prince' },
    { 'book_id': 42,   'title': 'The Hitchhiker\'s Guide to the Galaxy' }
  ];

  // Add documents into index we just created.
  var update = await index.addDocuments(documents);
}
// MeiliSearch is typo-tolerant:
var result = await index.search('harry pottre');

print(result.hits);

Output:

[
  {
    "book_id": 4,
    "title": "Harry Potter and the Half-Blood Prince"
  }
]

All the supported options are described in the search parameters section of the documentation.

var result = index.search(
  'prince',
  attributesToHighlight: ['title'],
  filters: 'book_id > 10',
);

Libraries

meilisearch