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

时间:2012-05-01 11:31:52

标签: java algorithm data-structures information-retrieval

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

  1. 您建议使用的数据结构是什么?
  2. 您会遵循什么算法? (细节赞赏)。
  3. 简单信息检索系统,其中查询包含关键字和 有一组要搜索的文件。在回应查询时,系统 标识包含全部或部分文档的每个文档(最多n个文档) 关键字和打印文档名称按照找到的关键字的降序排列,即a 包含所有关键字的文档应显示在列表顶部。

1 个答案:

答案 0 :(得分:5)

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

自己实施某些内容很难,但IR中最重要的数据结构是inverted index

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

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

如果您想扩展有关IR的知识,我建议您阅读Manning的Introduction to Information Retrieval