任务背景
当前多引擎搜索只按全局 limit 分配配额并拼接结果,缺少 URL 归一化去重、跨引擎来源合并、RRF 排名融合、引擎权重和每引擎候选数量控制。
实现要求
- 在核心搜索服务中增加聚合选项:aggregationMode、perEngineLimit、ranking、engineWeights、dedupe。
- 实现 URL 归一化去重,保守移除常见追踪参数并规范化协议、域名、hash、尾斜杠。
- 合并相同 URL 的多引擎结果,保留命中的 engines 列表。
- 实现 Reciprocal Rank Fusion 排序,并支持 engineWeights。
- 支持 fast、balanced、deep 三种候选配额策略。
- 保持 limit 表示最终返回结果数量。
文件或模块范围
- src/core/search/searchService.ts
- src/core/search/searchEngines.ts
- src/types.ts
- src/test/test-core-search.ts
不包含的内容
- 不接入 CLI、HTTP daemon、MCP 参数。
- 不新增搜索引擎。
- 不引入外部依赖。
技术建议
- 默认模式优先保持兼容。
- 将纯聚合逻辑保持在 core 层,便于各入口复用。
测试要求
- 覆盖 URL 去重与来源合并。
- 覆盖 RRF 排序。
- 覆盖 engineWeights 对排序的影响。
- 覆盖 perEngineLimit 和聚合模式配额策略。
验收标准
- 核心搜索测试通过。
- 多引擎重复 URL 只返回一条聚合结果。
- 聚合结果包含 engines 和 score 等可选元数据。
- 部分引擎失败仍通过 partialFailures 返回。
依赖任务
无。
是否可并行
否。后续入口接入依赖核心类型与行为稳定。
优先级
P0
任务背景
当前多引擎搜索只按全局 limit 分配配额并拼接结果,缺少 URL 归一化去重、跨引擎来源合并、RRF 排名融合、引擎权重和每引擎候选数量控制。
实现要求
文件或模块范围
不包含的内容
技术建议
测试要求
验收标准
依赖任务
无。
是否可并行
否。后续入口接入依赖核心类型与行为稳定。
优先级
P0