Skip to content

[聚合搜索增强 1/3] 实现核心聚合、去重与融合排序 #96

Description

@ufatfat

任务背景

当前多引擎搜索只按全局 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions