繁体   English   中英

文本自动完成的最佳数据结构是什么?

[英]What is the best data structure for text auto completion?

我有一长串单词,我想显示以用户输入的文本开头的单词。 当用户输入一个字符时,应用程序应该更新显示给用户的列表。 它应该类似于 Android 上的 AutoCompleteTextView。 我只是对存储单词的最佳数据结构感到好奇,以便搜索非常快。

可以使用特里。 http://en.wikipedia.org/wiki/Trie https://stackoverflow.com/search?q=trie

一篇不错的文章 - http://www.sarathlakshman.com/2011/03/03/implementing-autocomplete-with-trie-data-structure/

PS:如果您有一些“不分支”的子序列,那么您可以通过使用基数树来节省空间,这是一种在可能的情况下将多个字符放入节点的树实现 - http://en.wikipedia.org /wiki/基数树

为了实现自动完成功能,还使用了三元搜索树(TST):

http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/

但是,如果您想在字符串中查找任何随机子字符串,请尝试使用广义后缀树。

http://en.wikipedia.org/wiki/Generalised_suffix_tree

你可能会发现这个话题很有趣:

这不完全是您想要的,而是您问题的稍微扩展版本。

尝试(及其各种变体)在这里很有用。 本文对这个主题进行了更详细的处理。 也许你可以为 Android 实现一个完成树?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM