# DHT 元数据搜索服务待办 本文档只记录尚未完成且确定需要继续推进的工作 已经验收的功能不再保留在此文件中 实现现状和使用方式统一记录在 `README.md` ## 维护规则 - 只记录仍需实施或仍需验收的任务 - 完成并通过相应验证后直接删除任务 - 需求或技术决策变化时同步调整任务和验收标准 - 不保留已经放弃或当前没有实际需求的预留功能 - 涉及 Tantivy Schema 的改动尽量合并以减少全量重建次数 ## 阶段一 搜索索引空间优化 ### 目标 降低真实数据持续增长时的 Tantivy 磁盘占用并避免磁盘保护过早停止采集 ### 任务 - [ ] 在远端真实数据上验证六小时动态状态分桶对 Tantivy 文档重写和删除比例的改善 - [ ] 对比优化前后的每小时索引增长提交文档数和段合并压力 - [ ] 在远端真实数据的影子重建中验证 2 至 3 字符 Basic 倒排和四字符位置短语拆分方案 - [ ] 评估删除 `exact_file_names` 对精确文件名相关性排序的影响 - [ ] 评估大型种子文件采样数量和路径文本预算对搜索覆盖率与索引体积的影响 - [ ] 明确优化后的单文档平均占用重建峰值空间和预期最大可容纳种子数量 ### 验收标准 - [ ] 使用远端真实数据或等比例数据对比优化前后的索引体积 - [ ] 普通文本与扩展名组合查询精确哈希和详情文件匹配测试保持通过 - [ ] 影子索引重建期间旧索引继续提供搜索且完成后能够原子切换 - [ ] 重建峰值空间不会触发磁盘只读保护 ## 阶段二 搜索排序与热度完善 ### 目标 让热度随时间和活跃状态变化并让完全同分的搜索结果保持稳定顺序 ### 任务 - [ ] 设计可在查询时计算热度的索引字段避免权重和等级调整触发再次重建 - [ ] 为完全同分的搜索结果增加稳定的最终排序键 - [ ] 优先复用现有字段实现动态热度和稳定排序 若确需新增字段则合并为下一次 Tantivy Schema 更新 - [ ] 统计按需验证的 Peer 发现率握手成功率和平均验证耗时 - [ ] 根据真实验证数据校准热度权重等级边界和失败退避时间 ### 验收标准 - [ ] 热度能够随新发现可用性验证和时间衰减产生可观察变化 - [ ] 相同查询和相同数据重复执行时结果顺序保持一致 - [ ] 后续调整热度权重或等级边界不需要全量重建索引 ## 阶段三 数据质量统计与回归保护 ### 目标 用真实数据量化重复和过滤效果并防止规则调整造成误判 ### 任务 - [ ] 统计真实数据的 infohash 重复率和不同 infohash 的内容重复率 - [ ] 建立包含正常 Metadata 垃圾标题填充文件异常路径和极端文件数量的边界数据集 - [ ] 增加标题规则内部文件规则通配符正则和全部文件隐藏场景的误判测试 - [ ] 根据真实垃圾数据决定是否需要增加新的种子准入规则 ### 验收标准 - [ ] 重复率和过滤结果可以通过诊断数据或离线工具复现 - [ ] 过滤规则不会删除 RocksDB 中的原始 Metadata - [ ] 正常种子不会因为垃圾过滤规则被错误丢弃或错误聚合 ## 阶段四 长期运行与部署收尾 ### 目标 在版本保持不变的情况下完成长期运行验收并改善部署失败时的错误提示 ### 任务 - [ ] 在应用启动前检查数据目录配置文件和关键子目录的读写权限 - [ ] 使用同一版本完成二十四小时连续运行 - [ ] 使用同一版本完成七天连续运行 - [ ] 在真实独立设备上部署一个协调器和至少两个采集器完成二十四小时小流量验收 - [ ] 验证采样节点冷却表修复后两个远端采集器的内存进入稳定区间 - [ ] 记录连续运行期间的私有内存队列深度 Metadata 成功率磁盘增长和索引提交状态 - [ ] 在 `README.md` 补充简洁的备份恢复和常见故障排查步骤 ### 验收标准 - [ ] 权限错误在打开 RocksDB 或 Tantivy 前返回明确的路径和操作错误 - [ ] 私有内存和有界队列进入稳定区间且不随时间无限增长 - [ ] 连续运行期间没有数据格式损坏索引提交失败或不可恢复任务 - [ ] 容器重建后能够继续使用原 RocksDB Tantivy 和诊断历史 ## 当前下一步 继续观察两个远端采集器的长期内存和待发送箱状态并完成二十四小时分布式运行验收