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

如何为文件编制索引以进行快速搜索?

  •  7
  • Unknown  · 技术社区  · 16 年前

    如今,微软和谷歌将为你硬盘上的文件编制索引,这样你就可以快速搜索它们的内容。

    3 回复  |  直到 16 年前
        1
  •  13
  •   Will Hartung    16 年前

    简单的例子是一个反向索引。

    最基本的算法很简单:

    • 扫描文件中的单词,创建唯一单词列表
    • 规范化和过滤单词
    • 在索引中放置一个将该单词与文件关联的条目

    我所说的“规范化和过滤”单词,是指将所有内容转换为小写、删除常见的“停止词”(the、if、in、a等)、可能的“词干”(删除动词和复数等的常见后缀)。

    但是,这是最基本的方法。

        2
  •  11
  •   Valerij    10 年前

    这里有一个非常基本的描述;有关更多详细信息,您可以阅读本教科书(免费在线): http://informationretrieval.org/

    1). 为所有文件创建索引。索引由数据集中出现的所有唯一单词组成(称为“语料库”)。ids是每个单词的关联列表;每个文档id都指包含该单词的文档。

    变体:有时在生成索引时,您希望忽略停止词(“a”、“the”等)。不过,您必须小心(“生存还是毁灭”是一个由stopwords组成的真正的查询)。

    有时你也会把单词词干。这对在更大程度上使用后缀和前缀的非英语语言中的搜索质量有更大的影响。

    2) 当用户输入查询时,查找相应的列表并合并它们。如果它是一个严格的布尔查询,那么这个过程非常简单——对于和,docid必须出现在所有单词列表中,对于或,至少在一个单词列表中,等等。

    4) 您还可以存储单词位置以推断短语等。

    其中大部分与桌面搜索无关,因为您对召回(所有包含该术语的文档)比对排名更感兴趣。


    http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html ,可通过回程机访问

        3
  •  2
  •   Peter D    16 年前

    Apache Lucene .

    ApacheLucene是一个完全用Java编写的高性能、全功能文本搜索引擎库。这项技术几乎适用于任何需要全文搜索的应用程序,尤其是跨平台的应用程序。