Meilisearch Dart는 Dart 및 Flutter 애플리케이션용 가벼운 API 클라이언트로, 빠르고 관련성 있으며 사용자 정의 가능한 검색 엔진인 Meilisearch와 원활하게 통합할 수 있습니다. 개발자는 앱에서 실시간 검색을 수행하고 인덱스를 관리하며 문서 업데이트를 직접 처리할 수 있습니다. 이 클라이언트는 Android, iOS, Web, macOS, Windows, Linux 등 주요 플랫폼을 모두 지원하여 크로스플랫폼 검색 기능에 이상적입니다. 직관적인 메서드와 최소한의 설정으로 어떤 Flutter 프로젝트에도 강력한 검색 기능을 쉽게 추가할 수 있습니다.
This readme contains all the documentation you need to start using this Meilisearch SDK.
For general information on how to use Meilisearch—such as our API reference, tutorials, guides, and in-depth articles—refer to our main documentation website.
🔧 Installation
You can install the meilisearch package by adding a few lines into pubspec.yaml file.
dependencies:meilisearch:^0.19.0
Then open your terminal and update dart packages.
pub get
Run Meilisearch
⚡️ Launch, scale, and streamline in minutes with Meilisearch Cloud—no maintenance, no commitment, cancel anytime. Try it free now.
🪨 Prefer to self-host? Download and deploy our fast, open-source search engine on your own infrastructure.
🚀 Getting started
Add Documents
import'package:meilisearch/meilisearch.dart';
voidmain() async {
var client = MeiliSearchClient('http://127.0.0.1:7700', 'masterKey');
// An index is where the documents are stored.var index = client.index('movies');
const documents = [
{ 'id': 1, 'title': 'Carol', 'genres': ['Romance', 'Drama'] },
{ 'id': 2, 'title': 'Wonder Woman', 'genres': ['Action', 'Adventure'] },
{ 'id': 3, 'title': 'Life of Pi', 'genres': ['Adventure', 'Drama'] },
{ 'id': 4, 'title': 'Mad Max: Fury Road', 'genres': ['Adventure', 'Science Fiction'] },
{ 'id': 5, 'title': 'Moana', 'genres': ['Fantasy', 'Action']},
{ 'id': 6, 'title': 'Philadelphia', 'genres': ['Drama'] },
]
// If the index 'movies' does not exist, Meilisearch creates it when you first add the documents.var task = await index.addDocuments(documents); // => { "uid": 0 }
}
With the uid, you can check the status (enqueued, canceled, processing, succeeded or failed) of your documents addition using the task.
Basic Search
// Meilisearch is typo-tolerant:var result = await index.search('carlo');
print(result.hits);
Note that MeiliSearch will rebuild your index whenever you update filterableAttributes.
Depending on the size of your dataset, this might take time. You can track the process using the task status.
Then, you can perform the search:
await index.search('wonder', filter: ['id > 1 AND genres = Action']);
Meilisearch uses dio internally to send requests, you can provide it with your own interceptors or adapter using the MeiliSearchClient.withCustomDio constructor.
Using MeiliDocumentContainer
The MeiliDocumentContainer<T> class contains meilisearch-specific fields (e.g. rankingScoreDetails, _formatted, matchesPosition, etc...).
We define the mapToContainer() extension to help you quickly opt-in to this class, example:
final res = await index
.search("hello world")
.asSearchResult() //or .asPaginatedResult() if using page parameters
.mapToContainer();
🤖 Compatibility with Meilisearch
This package guarantees compatibility with version v1.x of Meilisearch, but some features may not be present. Please check the issues for more info.
💡 Learn more
The following sections in our main documentation website may interest you:
Any new contribution is more than welcome in this project!
If you want to know more about the development workflow or want to contribute, please visit our contributing guidelines for detailed instructions!
Meilisearch provides and maintains many SDKs and Integration tools like this one. We want to provide everyone with an amazing search experience for any kind of project. If you want to contribute, make suggestions, or just know what's going on right now, visit us in the integration-guides repository.