📚通配符查询
- 大爷想查找一个姑娘叫
马*梅
,但他确实不记得了,只能采用模糊查询。- 这里的
*
可以代替任何字符,这种查询叫做通配符查询。
🐇单个通配符查询
- 一个诸如
mon*
的查询称为尾通配符查询,可以构建一个正向的搜索树,依次按照字符m、o、n从上到下遍历搜索树,直到能列举词典中所有以mon开头的词项集合W为止。 - 推广尾通配符查询,考虑诸如
*mon
的首通配符查询,此时可以引入词典的反向B树结构。 - 基于以上,要查找
马*梅
,可以构造两棵二叉搜索树,一棵存储正向的词项(A),另一棵存储反向的词项(B)。那么我们只需要在A中检索以“马”为前缀的词项集合以及在B中检索以“梅”为前缀的词项集合,然后对这两者取并集即得“马*梅”所对应的所有词项。
🐇一般的通配符查询
- 如果用户查询的包含多个通配符,基于单个通配符的查询方法就不能完全适用了。这里引入轮排索引。
- 轮排索引