自动提示功能的加权特里

时间:2013-07-09 17:36:19

标签: data-structures trie

我有一个trie(后缀树),我在网站上使用它作为自动推荐功能。

现在我想在重量较轻的文本上方显示最受欢迎(最高权重)的文本。如何更改我的特里,以便按加权顺序提出建议。

或者我应该按重量按内存排序?

1 个答案:

答案 0 :(得分:1)

您可以在每个节点添加countweight属性,并在使用您的单词构建trie时更新它。每个字符的初始权重为0,但如果字符是单词的终结字符,则其初始权重为1。在不断添加单词时,可以调整终端字符的权重。

所以,例如,你可以:

t:0
|  
o:1
|
w:3---e:0
|  \    \
n:2 a:0  l:4
     \
      r:0
       \
        d:2

对于字符串to(出现一次),tow(出现三次),towel(出现四次),town(出现两次)和{{ 1}}(也出现两次)。

然后,如果您有前缀toward,则可以查看非零加权字符串,例如towtow:3towel:4town:2

之后,您可以根据体重进行排序。

我没有在实践中试过这个实现;这只是一个想法。