Algolia Search
Integrate Algolia Search with Fumadocs
Notice
If you're using Algolia's free tier, you have to display their logo on your search dialog.
Introduction
The Algolia Integration automatically configures Algolia Search for document search.
By default, it creates a record for each paragraph in your document, it is officially recommended by Algolia.
Each record contains searchable attributes:
Attribute | Description |
---|---|
title | Page Title |
section | Heading ID (nullable) |
content | Paragraph content |
The section
field only exists in paragraphs under a heading. Headings and
paragraphs are indexed as an individual record, grouped by their page ID.
Setup
Install Dependencies
Sign up on Algolia
Sign up and obtain the required API keys for your search. Store these credentials in environment variables.
Sync Search Indexes
The sync
function will update the index settings and sync search indexes.
You can export the search indexes from Next.js using a route handler:
Make sure to run the script after build:
Workflow
You may make it a script and manually sync with node ./update-index.mjs
, or
integrate it with your CI/CD pipeline.
Notice that it expects the url
property of a page to be unique. In other words, you shouldn't have two pages with the same
url.
Typescript Usage
If you are running the script with TSX
or other similar Typescript executors, ensure to name it .mts
for best ESM
compatibility.
Search Client
To search documents on the client side, use Fumadocs UI Search Dialog, or make your own implementation.
In addition, the headless search client of Fumadocs can handle state management for React.
Options
Tag Filter
To configure tag filtering, add a tag
value to indexes.
Search UI (Fumadocs UI)
Enable Tag Filter on Search Dialog.
Search Client
The tag
field is an attribute for faceting. To filter indexes by tag, use the filter tag:value
on Algolia search clients.
On Fumadocs search client, you can add the tag filter like:
Customise Attributes & Settings
While the default attributes might not suit your case, you can pass extra_data
to index options for adding extra fields to each record.
To customize the default index settings, set index settings, and update
documents with updateDocuments(...)
separately.
Last updated on