Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何构造反向btree?_Algorithm_Nlp_B Tree_Wildcard Expansion - Fatal编程技术网

Algorithm 如何构造反向btree?

Algorithm 如何构造反向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树是什么样子

例如,如果我有这样一棵树:

**

如何基于此Btree构造反向Btree


**

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

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

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


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

您好,感谢您的愤怒,但stand ford page已经解释了这一点。我在问如何构造一个反向btree。