Algorithm 如何构造反向btree?
我在这个网页上学习通配符查询 但是,我无法理解字典上的反向B树是什么样子 例如,如果我有这样一棵树: ** 如何基于此Btree构造反向BtreeAlgorithm 如何构造反向btree?,algorithm,nlp,b-tree,wildcard-expansion,Algorithm,Nlp,B Tree,Wildcard Expansion,我在这个网页上学习通配符查询 但是,我无法理解字典上的反向B树是什么样子 例如,如果我有这样一棵树: ** 如何基于此Btree构造反向Btree **反向B树就是在反向字符串上构造的常规B树数据结构 前缀查询速度很慢,处理前导通配符查询的方法之一是构造一个反向树(所有字符串都反转),也反转查询,然后像普通的尾随通配符查询一样搜索它,这要快得多,因为它们必须枚举受限域 (考虑字符串Lemon)例如“Le*”遍历L,然后遍历e,然后枚举所有可能性。如果您存储了一个反向树(Lemon变为nomeL
**反向B树就是在反向字符串上构造的常规B树数据结构 前缀查询速度很慢,处理前导通配符查询的方法之一是构造一个反向树(所有字符串都反转),也反转查询,然后像普通的尾随通配符查询一样搜索它,这要快得多,因为它们必须枚举受限域 (考虑字符串Lemon)例如
“Le*”
遍历L,然后遍历e,然后枚举所有可能性。如果您存储了一个反向树(Lemon变为nomeL),那么像'*mon'
这样的前缀查询可以更改(反向)为'nom*'
,这样的查询将变为后缀查询,并且可以以更好的运行时复杂度进行回答
从更实际的角度来看,像Solr这样的搜索引擎使用类似的技术来服务主要的通配符查询。性能提高的代价是更高的空间复杂度(空间/时间权衡)。有关更多信息,您可以查看Solr ReversedWildcardFilterFactory。您好,感谢您的愤怒,但stand ford page已经解释了这一点。我在问如何构造一个反向btree。