我的任务条件如下 - 它与Java /数据结构有关。我会尽量简短地回答我的问题,因为回答这些问题会帮助我找到方法(因为我迷路了):
简单信息检索系统,其中查询包含关键字和 有一组要搜索的文件。在回应查询时,系统 标识包含全部或部分文档的每个文档(最多n个文档) 关键字和打印文档名称按照找到的关键字的降序排列,即a 包含所有关键字的文档应显示在列表顶部。
答案 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。