Sun*_*hah 1 algorithm full-text-search search-engine
我想像应用程序一样开发谷歌桌面搜索,我想知道我应该使用哪种索引技术/算法,这样我就可以获得非常快速的数据回溯.
一般来说,你想要的是一个倒置索引.您可以自己进行索引编制,但要做到这一点需要做很多工作 - 您需要处理词干,停用词,扩展发布列表以包含文档中的位置,以便您可以处理多字查询等等.然后,您需要将索引存储在磁盘上的B-Tree中 - 或者您可以通过将现有数据库用于磁盘存储(例如BDB)来使自己的生活更轻松.您还需要编写一个查询计划程序来解释用户查询,执行查询扩展并将它们转换为一系列索引扫描.维基百科关于搜索引擎索引的文章也提供了对所有挑战的良好概述.
或者,您可以利用现有工作并使用现成的全文索引解决方案,如Apache Lucene和Compass(基于Lucene构建).这些工具几乎可以处理上面详述的所有内容(以及更多内容),这些工具只会让您编写工具来构建和更新索引,方法是将所有文档都提供给Lucene,以及允许用户搜索它的UI.