# 教学名次：向量通道更偏向通用质量政策，精确通道把目标产品规则排第一。
# 列表内容是稳定文档 ID；真实系统从两个检索器取得这两份排序。
rankings = [
    ["policy-quality", "product-P204", "policy-normal"],
    ["product-P204", "policy-quality"],
]
k = 60  # 平滑常数；这里只演示算法，不能当成对所有知识库最优的值。
scores = {}
for ranking in rankings:
    # 同一路出现重复 ID 时只保留首次，避免重复计分抬高文档名次。
    for rank, doc_id in enumerate(dict.fromkeys(ranking), start=1):
        scores[doc_id] = scores.get(doc_id, 0.0) + 1.0 / (k + rank)

# 同分时按 ID 排序，保证离线演示能够复现；生产中也要明确同分处理。
merged = sorted(scores, key=lambda doc_id: (-scores[doc_id], doc_id))
for doc_id in merged:
    print(doc_id, round(scores[doc_id], 6))
