进阶篇:深入看磁力搜索引擎的架构设计,以及为什么不同引擎的搜索体验差异巨大。
整体架构分层
- 采集层:DHT 嗅探节点、爬虫、用户提交;
- 处理层:元数据补全、去重、清洗、分类;
- 索引层:倒排索引 + 结构化字段;
- 服务层:查询解析、排序、缓存。
采集层的关键设计
DHT 嗅探怎么做
引擎部署一批「假节点」加入 DHT 网络并响应查询。当其它节点在 DHT 中宣告自己持有某个哈希时,这些节点就能捕获到。优点是实时、无需爬取;缺点是只能发现「正在被请求」的资源。
元数据补全的队列调度
每个哈希补全都要真正连接节点,成本高,调度策略很重要:
- 按哈希出现频率排序,热门优先;
- 失败重试有退避机制,避免浪费;
- 冷门哈希进入低优先级队列,可能永远不补全。
索引层的排序逻辑
与网页搜索的 PageRank 不同,磁力搜索的排序主要依赖:
- 文本相关性:文件名与查询的匹配度;
- 时效性:发布时间越新,越可能有人做种;
- 健康度:做种数、完成数;
- 来源权重:可信站点提交的条目权重更高。
为什么不同引擎差异大
- 嗅探节点部署位置不同,覆盖的 DHT 区域不同;
- 补全策略不同,有的只补热门,有的尽力而为;
- 清洗规则不同,对假资源、重复资源的过滤力度不同;
- 索引更新周期不同,做种数新鲜度差异大。
小结
架构决定了能力边界。同一个查询,在采集覆盖、补全深度、清洗强度不同的引擎上,结果可能天差地别。