Orama 云
与 Orama Cloud 集成
首先,在 Orama Cloud 上创建一个账户。
🌐 To begin, create an account on Orama Cloud.
REST API
REST API 集成需要你上传索引的文档。
🌐 REST API integration requires your docs to upload the indexes.
-
在 Orama Cloud 仪表板上使用 REST API 数据源创建一个新项目。
将你的凭据存储在环境变量中,例如:
NEXT_PUBLIC_ORAMA_DATASOURCE_ID="Rest API data source ID" NEXT_PUBLIC_ORAMA_PROJECT_ID="project ID" NEXT_PUBLIC_ORAMA_API_KEY="public API key" ORAMA_PRIVATE_API_KEY="private API key" -
通过预渲染静态路由导出搜索索引。
lib/export-search-indexes.ts import { source } from '@/lib/source'; import type { OramaDocument } from 'fumadocs-core/search/orama-cloud'; export async function exportSearchIndexes() { return source.getPages().map((page) => { return { id: page.url, structured: page.data.structuredData, url: page.url, title: page.data.title, description: page.data.description, } satisfies OramaDocument; }); }app/static.json/route.ts import { exportSearchIndexes } from '@/lib/export-search-indexes'; export const revalidate = false; export async function GET() { return Response.json(await exportSearchIndexes()); } -
创建一个脚本来同步搜索索引。
scripts/sync-content.ts import { sync, type OramaDocument } from 'fumadocs-core/search/orama-cloud'; import * as fs from 'node:fs/promises'; import { OramaCloud } from '@orama/core'; // the path of pre-rendered `static.json`, choose one according to your React framework const filePath = { next: '.next/server/app/static.json.body', 'tanstack-start': '.output/public/static.json', 'react-router': 'build/client/static.json', waku: 'dist/public/static.json', }['next']; async function main() { const orama = new OramaCloud({ projectId: process.env.NEXT_PUBLIC_ORAMA_PROJECT_ID, apiKey: process.env.ORAMA_PRIVATE_API_KEY, }); const content = await fs.readFile(filePath); const records = JSON.parse(content.toString()) as OramaDocument[]; await sync(orama, { index: process.env.NEXT_PUBLIC_ORAMA_DATASOURCE_ID, documents: records, }); console.log(`search updated: ${records.length} records`); } void main(); -
在生产构建后运行脚本,确保环境变量可用(例如,Bun 从
.env文件中读取):package.json { "scripts": { "build": "... && bun scripts/sync-content.ts" } }
搜索客户
🌐 Search Client
要在客户端搜索文档,请考虑:
🌐 To search documents on the client side, consider:
-
使用 Fumadocs 内置钩子的自定义搜索界面:
import { useDocsSearch } from 'fumadocs-core/search/client'; import { OramaCloud } from '@orama/core'; const client = new OramaCloud({ projectId: process.env.NEXT_PUBLIC_ORAMA_PROJECT_ID, apiKey: process.env.NEXT_PUBLIC_ORAMA_API_KEY, }); const { search, setSearch, query } = useDocsSearch({ type: 'orama-cloud', client, params: { // optional search params }, }); -
直接使用他们的搜索客户端。
网络爬虫
🌐 Web Crawler
- 从仪表板创建一个爬虫数据源,并使用“文档”预设正确配置它。
- 从仪表板复制凭证。
搜索客户
🌐 Search Client
与 REST API 集成相同,但请确保将 index 设置为 crawler。
🌐 Same as REST API integration, but make sure to set index to crawler.
import { useDocsSearch } from 'fumadocs-core/search/client';
import { OramaCloud } from '@orama/core';
const client = new OramaCloud({
projectId: '<project id>',
apiKey: '<read only api key>',
});
const { search, setSearch, query } = useDocsSearch({
type: 'orama-cloud',
index: 'crawler',
client,
params: {
// optional search params
},
});Fumadocs 的界面也是一样的。
🌐 It's same for Fumadocs UI.
Last updated on
