每个人都熟悉此功能。如果您打开Outlook地址簿并开始键入名称,则搜索框下方的列表会立即过滤为仅包含与您的查询匹配的项目。当您浏览类型时,.NET Reflector具有类似的功能...您开始键入,无论您正在浏览的底层程序集有多大,它都接近瞬间。
我总是想知道这里的秘制酱是什么。怎么这么快?我想如果数据存在于内存中,或者需要从某些外部源(即DB,搜索某些文件等)获取数据,也会有不同的算法。
我不确定这是否相关,但如果有资源,我特别感兴趣的是如何用WinForms做这个...但如果你知道一般资源,我很感兴趣那些: - )
答案 0 :(得分:2)
What is the most common use of the trie data structure?
Trie基本上是一个树结构,用于存储大量类似字符串,提供字符串的快速查找(如哈希表),并允许您按字母顺序迭代它们。
图片来自:http://en.wikipedia.org/wiki/Trie:
在这种情况下,Trie存储字符串:
我
在
客栈
到
茶
10个
对于您输入的任何前缀(例如,'t'或'te'),您可以轻松查找以该前缀开头的所有单词。更重要的是,查找取决于字符串的长度,而不是Trie中存储的字符串数量。阅读我引用的维基百科文章以了解更多信息。
答案 1 :(得分:1)
该过程称为全文索引/搜索。
如果您想要使用算法和数据结构,我建议您阅读Programming Collective Intelligence以获得对该字段的详细介绍,如果您只是想要我推荐的功能lucene。 / p>