信息检索系统的数据结构/算法

0 java algorithm information-retrieval data-structures

我有一个条件如下的任务 - 它是关于Java /数据结构.我会尽量简短地提出我的问题,因为回答这些问题会帮助我找到方法(因为我迷路了):

  1. 您建议使用的数据结构是什么?
  2. 你会遵循什么算法?(细节赞赏).

简单的信息检索系统,其中查询包含关键字,并且有一组要搜索的文档.在响应查询时,系统识别包含所有或一些关键字的每个文档(最多n个文档)并按照找到的关键字的降序打印文档名称,即包含所有关键字的文档应出现在顶部列表.

ami*_*mit 5

首先,您可能正在寻找apache lucene,这是一个在java中实现IR系统的开源库!

自己实现一些东西很难,但IR中最重要的数据结构是倒排索引.

倒排索引实际上是a map:term->list<index>,它将每个术语映射到它出现的文档.倒排索引的优点 - 它适合IR标准操作,例如连接(和查询).

在您的特定问题中,从集合中构建倒排索引,并在对k术语的查询到达时 - 获取k与这些术语相对应的列表,并获得它们的并集.
现在,一旦你有了联合 - 剩下的就是创建一个直方图(每个术语出现多少个列表,可以实现HashMap<Term,Integer>) - 并按降序值顺序打印这些直方图的键.

如果您想扩展有关IR的知识,我建议您阅读Manning的信息检索简介.