【问题标题】:Quick Filter List快速过滤器列表
【发布时间】:2010-09-23 08:22:44
【问题描述】:

每个人都熟悉此功能。如果您打开 Outlook 通讯簿并开始输入姓名,搜索框下方的列表会立即过滤为仅包含与您的查询匹配的项目。当您浏览类型时,.NET Reflector 具有类似的功能......您开始输入,无论您正在浏览的底层程序集有多大,它几乎都是瞬时的。

我一直想知道这里的秘诀是什么。怎么这么快?我想如果数据存在于内存中,或者需要从某个外部源(即数据库、搜索某个文件等)获取它们,也会有不同的算法。

我不确定这是否相关,但如果有资源,我特别感兴趣的是如何使用 WinForms 做到这一点......但如果你知道一般资源,我很感兴趣那些也是:-)

【问题讨论】:

    标签: search list filter


    【解决方案1】:

    该过程称为全文索引/搜索。

    如果您想为此使用算法和数据结构,我建议您阅读Programming Collective Intelligence 以获得对该领域的良好介绍,如果您只是想要功能,我建议您阅读lucene

    【讨论】:

      【解决方案2】:

      What is the most common use of the trie data structure?

      Trie 基本上是一种用于存储大量相似字符串的树结构,它提供字符串的快速查找(如哈希表)并允许您按字母顺序迭代它们。

      图片来自:http://en.wikipedia.org/wiki/Trie:

      在这种情况下,Trie 存储字符串:


      客栈



      对于您输入的任何前缀(例如,“t”或“te”),您可以轻松查找以该前缀开头的所有单词。更重要的是,查找取决于字符串的长度,而不是 Trie 中存储了多少字符串。阅读我参考的维基百科文章以了解更多信息。

      【讨论】:

      • 我已接近每天 200 个代表的限制。如果您等到明天投票或接受,我将不胜感激。 :)
      猜你喜欢
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多