【课程名称】:Java语言程序设计 【实验名称】:基于内存的搜索引擎设计和实现 【学生姓名】:朱槐志 【指导教师】:纪俊文 **一、需求分析** 本次实验要求设计并实现一个基于内存的英文全文检索搜索引擎。主要功能包括: 1. **索引构建** - 读取指定目录下的`.txt`格式文本文件内容。 - 将内容分词,过滤掉数字、停用词(如"the", "is", "and"等)、长度小于3或大于20的单词。 - 使用Java集合类在内存中建立经过过滤的单词倒排索引。 - 索引对象可以序列化到文件,并能从文件反序列化回内存。 - 能在控制台输出索引内容。 2. **单个关键词搜索** - 根据关键词搜索,返回匹配结果集合。 - 计算每个命中文档的得分,并按得分排序。 - 输出命中文档的详细信息,包括路径、内容、关键词出现次数和得分。 3. **多个关键词搜索** - 支持两个关键词的“与”或“或”查询。 - “与”查询返回同时包含两个关键词的文档集合,“或”查询返回包含任意一个关键词的文档集合。 - 对每个命中文档计算得分,按得分排序,并显示详细信息。 4. **短语检索** - 实现包含两个相邻单词的短语检索,这两个单词必须出现在同一文档中。 额外要求: - 继承预定义的抽象类,实现预定义接口,不得修改已有数据成员和方法。 - 类和方法需添加Javadoc注释,生成API文档。 - 使用统一的测试数据集和案例进行功能测试,结果输出到文本文件。 - 仅需基于控制台实现,提供运行截图。 **二、系统设计** 1. **概要设计** 系统分为两大部分:索引构建模块和查询模块。 - **索引构建模块** - **文档处理模块** - 提取模块:读取文档内容,转化为包含文档ID、路径和TermTuple列表的二进制流。 - 过滤模块:过滤不符合要求的TermTuple。 - **索引生成模块** - 合并文档处理结果,创建包含文档ID-路径映射和Term-PostingsList映射的索引。 - **查询模块** - 处理单个关键词和多个关键词的搜索请求,以及短语检索。 2. **详细设计** - 索引构建中,文档处理模块可能包含一个BufferedReader类用于读取文件,一个Tokenizer类用于分词,以及一个Filter类用于过滤无效词。 - 索引生成模块可能包含一个IndexBuilder类,负责整合过滤后的TermTuple并构建索引结构。 - 查询模块包含一个IndexSearcher类,负责执行搜索操作,可能包含singleKeywordSearch()、multiKeywordSearch()和phraseSearch()方法。 - 短语搜索功能需要在IndexSearcher类中新增phraseSearch()方法,并编写TestPhraseSearchIndex测试类。 在实现过程中,应遵循预定义的抽象类和接口,确保代码的可扩展性和一致性。同时,使用Javadoc注释提高代码的可读性,并自动生成API文档以便于理解和维护。通过统一的测试数据集和案例,确保搜索引擎功能的准确性和性能。
剩余43页未读,继续阅读
- 粉丝: 25
- 资源: 292
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0