代码之家  ›  专栏  ›  技术社区  ›  SunnyShah

开发谷歌桌面搜索等应用程序的索引算法?

  •  1
  • SunnyShah  · 技术社区  · 15 年前

    我想开发类似谷歌桌面搜索的应用程序,我想知道我应该使用哪些索引技术/算法,以便能够快速检索数据。

    2 回复  |  直到 12 年前
        1
  •  8
  •   Nick Johnson    15 年前

    一般来说,你想要的是一个 Inverted Index stemming , stop words ,扩展过帐列表以包括文档中的职位,以便您可以处理多词查询,等等。然后,您需要将索引存储在 B-Tree 在磁盘上—或者您可以通过使用现有数据库进行磁盘存储,使自己的生活更轻松,例如 BDB . 您还需要编写一个查询计划器来解释用户查询、执行 query expansion 并将其转换为一系列索引扫描。维基百科关于 Search Engine Indexing

    或者,您可以利用现有工作并使用现成的全文索引解决方案,如 Apache Lucene Compass (它建立在Lucene之上)。这些工具几乎可以处理上面(以及更多)详细介绍的所有内容,只需编写工具,通过将所有文档输入Lucene来构建和更新索引,并编写UI以允许用户进行搜索。

        2
  •  4
  •   David Crawshaw    15 年前

    Burrows-Wheeler变换用于压缩bzip2中的数据,可用于使文本的子字符串搜索成为一个常数时间函数。

    http://en.wikipedia.org/wiki/Burrows-Wheeler_transform

    我在网上没有看到简单的介绍,但这里有很多细节:

    http://www.ddj.com/architect/184405504