SearchConfig search-config

这是一个用于配置和管理全文搜索服务的技能,关键词包括搜索索引、搜索后端管理、优化全文搜索、混合搜索模式等。

后端开发 0 次安装 0 次浏览 更新于 3/5/2026

name: search-config description: “搜索索引配置和全文搜索管理” emoji: “🔎”

搜索配置 - 完整API参考

配置搜索索引,管理搜索后端,并优化全文搜索。


聊天命令

查看状态

/search-config                              显示搜索配置
/search-config status                       索引状态
/search-config stats                        搜索统计

索引管理

/search-config rebuild                      重建所有索引
/search-config rebuild memories             重建特定索引
/search-config optimize                    优化索引
/search-config clear <index>                清除索引

配置

/search-config backend sqlite               设置后端
/search-config backend elasticsearch       使用Elasticsearch
/search-config mode hybrid                  设置搜索模式
/search-config boost semantic 0.7           设置语义权重

TypeScript API参考

创建搜索服务

import { createSearchService } from 'clodds/search';

const search = createSearchService({
  // 后端
  backend: 'sqlite',  // 'sqlite' | 'elasticsearch' | 'typesense' | 'meilisearch'

  // 搜索模式
  mode: 'hybrid',  // 'fulltext' | 'semantic' | 'hybrid'

  // 混合权重
  semanticWeight: 0.6,
  fulltextWeight: 0.4,

  // 嵌入提供者(用于语义)
  embeddings: {
    provider: 'openai',
    model: 'text-embedding-3-small',
  },

  // 存储
  dbPath: './search.db',
});

索引文档

// 索引单个文档
await search.index({
  collection: 'memories',
  id: 'mem-1',
  content: '用户偏好保守交易',
  metadata: {
    type: 'preference',
    userId: 'user-123',
  },
});

// 索引批量
await search.indexBatch({
  collection: 'documents',
  documents: [
    { id: 'doc-1', content: '第一份文档', metadata: {} },
    { id: 'doc-2', content: '第二份文档', metadata: {} },
  ],
});

搜索

// 全文搜索
const results = await search.search({
  query: '交易策略',
  collection: 'documents',
  limit: 10,
});

for (const result of results) {
  console.log(`${result.id}: ${result.score}`);
  console.log(`  ${result.snippet}`);
}

// 带过滤器
const results = await search.search({
  query: '比特币',
  collection: 'news',
  filters: {
    date: { gte: '2024-01-01' },
    source: 'reuters',
  },
  limit: 20,
});

混合搜索

// 结合全文和语义
const results = await search.hybridSearch({
  query: '如何在交易中管理风险',
  collection: 'documents',
  semanticWeight: 0.7,
  fulltextWeight: 0.3,
  limit: 10,
});

获取索引统计

const stats = await search.getStats();

console.log('索引统计:');
for (const [collection, info] of Object.entries(stats.collections)) {
  console.log(`${collection}:`);
  console.log(`  文档: ${info.documentCount}`);
  console.log(`  大小: ${info.sizeMB} MB`);
  console.log(`  最后索引: ${info.lastIndexed}`);
}

console.log(`
搜索统计:`);
console.log(`  今日查询: ${stats.queriesToday}`);
console.log(`  平均延迟: ${stats.avgLatencyMs}ms`);
console.log(`  缓存命中率: ${stats.cacheHitRate}%`);

重建索引

// 重建所有索引
await search.rebuildAll();

// 重建特定集合
await search.rebuild('memories');

// 带进度回调
await search.rebuild('documents', {
  onProgress: (progress) => {
    console.log(`${progress.current}/${progress.total} (${progress.percent}%)`);
  },
});

优化索引

// 优化以获得更好的性能
await search.optimize();

// 优化特定集合
await search.optimize('documents');

清除索引

// 清除特定集合
await search.clear('memories');

// 清除全部
await search.clearAll();

配置后端

// 切换到Elasticsearch
await search.setBackend('elasticsearch', {
  url: process.env.ELASTICSEARCH_URL,
  index: 'clodds',
});

// 切换到Typesense
await search.setBackend('typesense', {
  url: process.env.TYPESENSE_URL,
  apiKey: process.env.TYPESENSE_API_KEY,
});

搜索后端

后端 最适合 特性
SQLite 开发,小数据 简单,嵌入式
Elasticsearch 生产,大数据 可扩展,强大
Typesense 快速搜索 拼写容忍
Meilisearch 即时搜索 易于设置

搜索模式

模式 描述
fulltext 传统的关键词匹配
semantic 向量相似性搜索
hybrid 组合(两者最佳)

混合搜索权重

// 更强调意义
const results = await search.hybridSearch({
  query: '风险管理',
  semanticWeight: 0.8,  // 80%语义
  fulltextWeight: 0.2,  // 20%关键词
});

// 更强调精确匹配
const results = await search.hybridSearch({
  query: 'BTCUSDT',
  semanticWeight: 0.2,  // 20%语义
  fulltextWeight: 0.8,  // 80%关键词
});

最佳实践

  1. 使用混合搜索 —— 大多数查询的最佳结果
  2. 定期重建 —— 保持索引最新
  3. 批量插入后优化 —— 提高性能
  4. 监控延迟 —— 如果太慢则扩展
  5. 调整权重 —— 调整语义/全文平衡