0

我有一个条件如下的任务 - 它与 Java / 数据结构有关。我将尝试简单地提出我的问题,因为回答这些问题将帮助我找到方法(因为我迷路了):

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

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

4

1 回答 1

5

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

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

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

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

如果您想扩展您对 IR 的了解,我建议您阅读 Manning 的信息检索简介

于 2012-05-01T11:34:29.197 回答