我正在关注此网页https://nlp.stanford.edu/IR-book/html/htmledition/wildcard-queries-1.html以了解外卡查询。
但是,无法理解字典中反向B树的外观如何。
**
如何基于此btree构建反向Btree?
**
答案 0 :(得分:1)
反向B树只是在反向字符串上构造的常规B树数据结构。
前缀查询很慢,处理前导通配符查询的方法之一是构造一个反向树(所有字符串都反转),反转查询,然后像普通的尾随通配符查询一样搜索它更快,因为他们必须枚举受限制的域。
(考虑字符串Lemon)例如'Le*'
您遍历L,然后是e然后枚举所有可能性。如果你已经存储了一个反向树(其中Lemon变成了nomeL),那么像'*mon'
这样的前缀查询的查询可以被改变(反转)为'nom*'
,这将成为后缀查询并且可以更好地回答运行时复杂度。
从更实际的角度来看,像Solr这样的搜索引擎使用类似的技术来提供领先的通配符查询。性能的提高是以更高的空间复杂度(空间/时间权衡)为代价的。有关更多信息,请查看Solr ReversedWildcardFilterFactory。