如何构建反向btree?

时间:2017-05-02 06:27:48

标签: algorithm nlp b-tree wildcard-expansion

我正在关注此网页https://nlp.stanford.edu/IR-book/html/htmledition/wildcard-queries-1.html以了解外卡查询。

但是,无法理解字典中反向B树的外观如何。

例如,如果我有这样的Btree: enter image description here

**

  

如何基于此btree构建反向Btree?

**

1 个答案:

答案 0 :(得分:1)

反向B树只是在反向字符串上构造的常规B树数据结构。

前缀查询很慢,处理前导通配符查询的方法之一是构造一个反向树(所有字符串都反转),反转查询,然后像普通的尾随通配符查询一样搜索它更快,因为他们必须枚举受限制的域。

(考虑字符串Lemon)例如'Le*'您遍历L,然后是e然后枚举所有可能性。如果你已经存储了一个反向树(其中Lemon变成了nomeL),那么像'*mon'这样的前缀查询的查询可以被改变(反转)为'nom*',这将成为后缀查询并且可以更好地回答运行时复杂度。

从更实际的角度来看,像Solr这样的搜索引擎使用类似的技术来提供领先的通配符查询。性能的提高是以更高的空间复杂度(空间/时间权衡)为代价的。有关更多信息,请查看Solr ReversedWildcardFilterFactory。