# 💡 Summary
[[minHash]]
[[LSH]]
[[Jaccard 相似度]]
# 🧩 Cues
# 🪞Notes
## 完整流程示例
```Java
原文档:
doc1: "我爱吃苹果和香蕉"
doc2: "我爱吃苹果和香蕉" ← 完全一样
↓ 步骤1:生成3-gram(假设用3-gram)
doc1: {我爱吃, 爱吃苹, 吃苹果, 苹果和, 果和香, 和香蕉}
doc2: {我爱吃, 爱吃苹, 吃苹果, 苹果和, 果和香, 和香蕉} ← 完全相同
↓ 步骤2:计算MinHash签名
doc1: [12, 45, 78, 23, ...] ← 指纹
doc2: [12, 45, 78, 23, ...] ← 指纹一样
↓ 步骤3:LSH分桶
桶#5: [doc1, doc2] ← 分到同一桶
↓ 步骤4:计算精确Jaccard
Jaccard(doc1, doc2) = 6/6 = 1.0 > 0.8阈值 ✓
↓ 步骤5:去重
保留doc1,删除doc2
```
**为什么要这么复杂?**
- 如果有100万个文档,两两比较需要5000亿次
- 用MinHash+LSH,可能只需要比较几百万次
- 速度提升几千倍!