目录
[1. 项目实现背景](#1. 项目实现背景)
[2. 项目目标与实现方法](#2. 项目目标与实现方法)
[2.1 项目目标](#2.1 项目目标)
[2.2 总体功能](#2.2 总体功能)
[3. 基本工具](#3. 基本工具)
[3.1 Java8 API离线文档](#3.1 Java8 API离线文档)
[3.2 Ansj分词库](#3.2 Ansj分词库)
[4. 模块划分](#4. 模块划分)
[4.1 索引模块](#4.1 索引模块)
[4.2 搜索模块](#4.2 搜索模块)
[4.3 web模块](#4.3 web模块)
1. 项目实现背景
Oracle提供了Java多个版本的API 在线文档,以Java8为例,地址如下:
https://docs.oracle.com/javase/8/docs/api/index.html
在线文档页面布局如下:

Oracle官方的API文档却未提供搜索功能,这给查询接口及类的相关成员属性或方法造成了一定困难,只能根据左侧导航栏逐包逐类或接口地查找。
故现实现Java8 API 搜索引擎,以方便查找与使用。
2. 项目目标与实现方法
2.1 项目目标
实现java8 API文档的栈内搜索引擎。
2.2 总体功能
使用oracle官网提供的Java8的API压缩包,在本地基于离线文档制作索引实现搜索。当用户在搜索结果页点击具体的搜索结果时,就自动跳转到在线文档的页面。即本地搜索+在线查看。
本地搜索实现读取本地文档并建立索引,保证快速检索;在线查看则保证查找结果与官方网站的实时一致与美观展示。
3. 基本工具
3.1 Java8 API离线文档
java 8文档压缩包下载地址:Java Downloads | Oracle

点击Documentation Download进行压缩包的下载:

3.2 Ansj分词库
Ansj是一个开源的分词库,官网相关介绍见地址:
https://github.com/NLPchina/ansj_seg
Ansj的maven依赖见maven仓库地址:
https://mvnrepository.com/artifact/org.ansj/ansj_seg
或直接将以下dependency导入pom.xml文件:
XML
<!-- Source: https://mvnrepository.com/artifact/org.ansj/ansj_seg -->
<dependency>
<groupId>org.ansj</groupId>
<artifactId>ansj_seg</artifactId>
<version>5.1.6</version>
<scope>compile</scope>
</dependency>
4. 模块划分
4.1 索引模块
-
扫描下载到的文档,分析文档内容,构建正排索引与倒排索引,并将索引内容保存在文件中;
-
加载制作好的索引,并提供一些API实现查正排与查倒排的功能;
4.2 搜索模块
调用索引模块,实现一个搜索的完整过程;
输入为用户查询词,输出为多条记录(标题、描述、URL)并且点击能够跳转;
4.3 web模块
实现一个web程序,能够通过网页形式与用户进行交互;
后续各模块具体实现见本专栏后文。