洞察纵观鸿蒙next版本,如何凭借FinClip加强小程序的跨平台管理,确保企业在数字化转型中的高效运营和数据安全?
1232
2022-10-07
【原来那么简单/大数据】随随便便开发一个属于自己的搜索引擎
【1K数据集+SpringBoot+Thymeleaf】基于全文检索技术lucene开发的搜索引擎
一、需求分析
实现一个搜索框,能够索引指定数据集(数据取自数据库中)实现索引内容的展示,图片展示实现文本分类,排序等基础功能索引数据量>1K (可自行爬取)每次完成搜索能够进行一次评价一次检索效率可做毕设/可做项目/大创
1.1、项目效果图展示
1.1.1前端页面展示:
1.1.2数据库数据展示:
二、所用技术栈
SpringBootThymeleaf模板渲染mysqlik中文分词lucene 索引json转换HTML+CSS+JavaScript
2.1项目版本信息:
jdk1.8mysql 5.7.29lucene 7.7.2maven 3.6.3Windows 10系统IntellJ IDEA 2019 2.14Navicat for mysql 12.1.2
三、项目技术理论基础篇
本项目的重点是搜索/索引。所以我们首先认识一下所谓的搜索功能。
传统的搜索功能流程如图01-00.
图01-00
以上搜索功能是目前企业中较为传统的一种搜索方式,其特点就是数据量少,承载不了高并发。
本项目所采用的搜索理论基础方案如图01-01.
图01-01
使用新方案的优势:
降低了数据库压力提升了数据库访问速度通过lucene的API操作索引库访问数据库实现了业务与数据的有效隔离
数据查询有两种方案:
顺序查询
所谓顺序查询就是通过用户检索的内容进行字符串匹配,遍历所有的文档,当匹配到相同字符串便查询到当前文件,没有查到则继续扫描下一个文件,直到扫描完成所有文件。
倒排索引
倒排索引是指先将海量数据进行分词,形成一个索引表,查询时先查询索引表,通过索引表查询指定文件,这样可以做到有效去重查询相同内容文本的时间。为了做到倒排索引,我们才用的则是全文检索技术------lucene
3.1、Lucene相关认识(需要你认识到)
lucene是一种技术架构,不是一个成型的技术产品,而是半产品。lucene是一个工具包,我们可以利用它完成索引工具的开发,制作属于自己的搜索引擎产品Lucene在Java开发环境里是一个免费成熟的源代码工具Lucene可以通过官方网站-,当然我也会提供-包链接()Lucene是Apache公司的产品Lucene实现全文检索的基本流程图:
原始文档数据:
可以自行爬取数据,也可以用小哥提供的文档数据文档数据放在小哥配套的文件夹(DataSources)里,是一个mysql文件,大家可以直接导入mysql即可。
文档:
拿到原始文档数据是为了建立索引,在索引前需要将原始内容创建文当Document,文档Document中包含了许多域Field
分析文档(分词):分析文档就是分词。将文档中的内容进行词组划分。索引文档:索引文档是为了更好地搜索。分词形成了词汇单元,通过索引词汇单元快速找到需要被索引到的内容。
四、项目实战篇
4.1 Lucene的-
可以通过官方网站-lucene,也可以在小哥留的资料包里-
解压后:
PS:queryparser:查询解析器
使用以上三个文件就可以实现本次项目中Lucene的功能。
4.2数据源-
也在这个文件夹下面:
导入到mysql的效果:
4.3Java工程的创建
使用 DAO接口实现类获取mysql中的数据:
package cn.linghu.dao;import cn.linghu.pojo.Sku;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;/** * */public class SkuDaoImpl implements SkuDao { public List
4.3.1核心代码------实现索引流程:
在E盘创建一个文件夹名为 dir作为我们的索引文件目录,执行代码成功之后, dir文件夹内会出现如图:
出现此图表示创建索引成功!
4.3.2pom文件中的依赖引入
发表评论
暂时没有评论,来抢沙发吧~