Flexsearch
Built-in document search of Next Docs
Next Docs supports searching document based on Flexsearch.
As the bulit-in search of Next Docs, It is the default but also recommended option since it's easier to setup and totally free.
Usage
Note: If you're using a CMS, you should use the API provided by the CMS instead.
Assumes you're using Contentlayer.
- Create the API Route.
- Create a Search Dialog.
createSearchAPI
Create a GET route handler, that supports simple
and advanced
search.
createI18nSearchAPI
Create a GET route handler with i18n functionality.
useDocsSearch
A hook that combined debounce value and useSWR
.
Return Type
Prop | Type | Description |
---|---|---|
query | SWRResponse | SWR Query |
search | string | Searching text (not debounced) |
setSearch | (v: string) => void | Set searching text |
Response Data
Type | |
---|---|
empty | If the searching text is empty or blank |
SortedResult[] | Array of matching pages, headings and contents. |
Custom Algorithm
You can port your own search algorithm by returning a list of SortedResult
from your custom /api/search/route.ts
api endpoint, and you can integrate it
with Next Docs UI.
Prop | Type | Default |
---|---|---|
id | string | - |
url | string | - |
type | enum | - |
content | string | - |
Advanced Search
Currently used by the official documentation, returns a more detailed result with matching headings and contents.
It extracts structured data from a markdown/mdx document, and index it with
Flexsearch. With the structure
function exported from
next-docs-zeta/mdx-plugins
.
Known Issues
- Can't extract content from rehype plugin specific content (you can pass remark plugins)
Usage
Assume you are using Contentlayer with the default configuration.
Tip:
If you have custom remark plugins enabled, such as
remark-math
, you have to manually structurize the document with these
plugins passed into the function:
Tag Filter
It's useful for implementing versioned docs, or multi-docs similar to this documentation.
Next Docs UI's Search Dialog doesn't support tag filter.
Last updated on