知识卡片
n-gram 索引:先用廉价过滤器筛,再用精确匹配兜底
内容
处理带通配符的模糊查询(如lab*r)时,若通配符不在词尾,前缀二分查找就失效。n-gram索引把字典每个词拆成固定长度片段建索引,查询时取出模式中的片段找候选词——这一步允许错配,候选词只是”包含这些片段”不保证顺序一致。真正决定答案的是随后的精确匹配校验,n-gram索引的价值是把暴力匹配缩小成对候选做精确匹配,是信息检索里常见的粗筛高召回、精确校验补齐精度的两阶段模式。
参考来源
- 位置:第4章《查询》「用n-gram索引」小节(源文件:_chapter-text/ch04.txt)
- 结论依据:原文说明通配符不在词尾时前缀二分查找失效,需要用n-gram索引找候选词,且明确指出候选词只是过滤结果,不保证真正匹配,直接支持卡片论点。
- 原始内容:"如果通配符放在查询术语的末端……在前缀上进行二分查找依然可以找到所有匹配的术语。然而如果通配符不在末端,或者不止一个通配符,这就需要其他不同的技术……用n-gram索引"