SearchFn
ReferenceAdapters

Meilisearch Adapter

External Meilisearch adapter for hosted or self-hosted search backends.

The Meilisearch Adapter connects to a Meilisearch instance for fast, typo-tolerant search with automatic ranking.

When to Use

  • User-facing search with high relevance requirements
  • Applications that need typo tolerance out of the box
  • Dedicated search infrastructure (hosted or self-hosted Meilisearch)

Installation

npm install @searchfn/adapters

Usage

import { MeilisearchAdapter } from "@searchfn/adapters";

const adapter = new MeilisearchAdapter({
  host: process.env.MEILI_URL!,
  apiKey: process.env.MEILI_API_KEY!,
  indexPrefix: "myapp",
});

await adapter.initialize({
  resources: [{ name: "tasks", searchFields: ["title", "description"] }],
});

await adapter.index({
  resource: "tasks",
  documents: [
    { id: "t-1", fields: { title: "Ship docs", description: "Write the guide" } },
  ],
});

const ids = await adapter.search({ resource: "tasks", query: "docs" });

Configuration

OptionTypeDefaultDescription
hoststringRequired. Meilisearch HTTP endpoint.
apiKeystringAuthentication key. Redacted in logs.
indexPrefixstring"searchfn"Prefix for Meilisearch index names ({prefix}-{resource}).
requestTimeoutMsnumber30000Request timeout.
retry.maxRetriesnumber2Retry attempts for transient failures.
retry.baseDelayMsnumber100Base delay between retries.
retry.maxDelayMsnumber5000Maximum delay between retries.
loggerAdapterLoggerOptional adapter-level logger.

Capabilities

CapabilitySupported
persistentYes
searchAllYes
fuzzyYes
fieldBoostsNo

Behavior

  • Creates Meilisearch indexes automatically on initialize.
  • index performs document upserts — re-indexing the same ID updates the document.
  • remove and clear are idempotent — calling them on non-existent documents or empty indexes is safe.
  • Authentication failures (invalid API key, insufficient permissions) return FORBIDDEN.
  • Keep API keys in environment-level secrets — never hardcode them.