主要介绍 FTS 的一些实现。
分词技术
ngram
字典结构
ngram bloomfilter
- 生成 N-gram: 将一个输入字符串生成所有可能的 N-gram。
- 存储到布隆过滤器: 对每个 N-gram 使用多个哈希函数,将其存储到布隆过滤器中。
查询: 对查询的字符串生成对应的 N-gram,逐个检查它们是否存在于布隆过滤器中。
- 如果布隆过滤器判定所有 N-gram 存在,说明可能是匹配。
- 如果至少有一个 N-gram 不存在,可以确定不匹配。
缺点:
- 存在 FP
- 不支持删除
BTree
跳表
KV 结构
存储分词后的倒排索引
1 | "OceanBase" -> [Doc1, Doc2] |
FST(Finite-State Transducer)
FST 是一种 Trie 树的结构。