当前位置:   article > 正文

Java项目——文档搜索引擎_java 文本搜索

java 文本搜索

1. 项目概述

实现一个较为简单的搜索引擎,在拥有较多网页的基础上,在用户输入查询词之后,能够从这些网页中尽可能地匹配出用户想要的网页

当然,不同于百度搜狗这种搜索引擎,它们能够对互联网中大量的网站都进行搜索,我们这里实现的是针对「Java 文档」的搜索引擎,就像下图,能对 Java 帮助文档 的 API 针对关键词进行文档的搜索
在这里插入图片描述

2. 准备阶段

2.1 项目创建

了解了项目的大概之后,就可以开始一点一点制作了,首先进行 Spring 项目的创建

在这里插入图片描述在这里插入图片描述至此,项目的创建就完成了,为了简化目录,可以将新创建中的这四个文件进行删除
在这里插入图片描述

2.2 准备静态页面

既然要搜索页面,那肯定得先有页面才能搜索,这里建议直接去官网中下载
网址:Java 文档下载

然后点击下载即可
在这里插入图片描述随后,将安装包解压,放到自己指定的目录,这里我就放在项目所在目录(路径上尽量不要有中文)

在这里插入图片描述
至此,准备阶段就完成了

3. 搜索逻辑

在真正编写代码之前,先了解一下搜索的逻辑。

首先我们需要预处理所有的静态页面,获取文档标题(这里文档可以理解成一个静态页面),url,正文等信息,然后包装成一个Document对象。并且还需要通过两个索引来组织这些对象——正排索引和倒排索引,同时记录「权重或者说是相关性」,便于将搜索结果进行整合并排序

  • 正排索引:根据文档 ID 能够得到相应的 文档,显然这个结构可以让人想起了 哈希表,但是 ArrayList 更适合,下标和元素相对应
  • 倒排索引:根据某个词,可以得到相关联的 List<文档ID>

在用户搜索的时候,我们会获取搜索的语句(这里称为 query),然后对 query 进行分词得到分词结果,然后遍历分词结果,得到「相关联的文档」整理后返回给前端展示

如下,和普通的搜索引擎一样,展示的部分主要有标题,url,摘要(其实也就是正文的截取);
并且点击标题能够跳转到相应的页面
在这里插入图片描述

4. 分词

接下来就是代码部分:
为了分词,这里可以在仓库—Ansj链接中,点击第一个,选择最高版本的导入 Spring 中即可

然后可以使用ToAnalysis.parse(字符串).getTerms() 获取到根据该字符串分词得到的 List<Term> 对象,而 Term 就是一个分词结果对象,里面有不少属性,其中又可以通过getName() 来获取这个分词的名字,例如
在这里插入图片描述

5. 处理 HTML 文件

然后是预处理API中所有的 HTML 文件,然后将这些文件构造成 Document 对象并加入到正排索引和倒排索引

5.1 枚举文件夹中所有文件

⭐创建一个 Parser 类,负责进行索引的加载,在此之前还要完成 HTML 文件的预处理

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/862349
推荐阅读
相关标签