综述
这个站内搜索项目使用 Boost 库作为基础,支持用户输入关键字并返回多个相关搜索结果。每个结果包含文档标题、简介和 URL,用户可以通过点击标题访问指定网页。此外,该项目还提供词频统计和热词排行榜功能,以便更好地了解文档内容和查询趋势。
依赖
- Redis
- spdlog
- MySQL
- boost标准库
安装
git clone git@github.com:zevin02/BoostSearchEngine.git
cd BoostSearchEngine
make
效果展示
去标签化,清理数据
将爬虫和下载的boost库的文件,进行提炼,去标签化,保留里面的有效数据
- 提取html文件
- 将提取到的html文件进行提炼有效数据
- 将有效数据的集合写入到一个文件中
构建索引
- 根据将去标签化后构建的内容集合在内存中
构建正排索引
,形成对应的文档结构体 - 将形成的文档结构体在内存中
构建倒排索引
,根据关键词找到对应的倒排拉链
(一系列和该关键字相光的文档集合)- 根据
Jieba
分词对title
和content
进行分词同时划定权重,构建倒排拉链
- 每个倒排索引中都包含权重,之后我们就能够使用权重对文档优先级进行排序
- 根据
用户查询
- 用户输入搜索关键字后,先进行
JieBa分词
,后将数据存放到前缀树
和Redis
中 - 通过
倒排索引
获得对应的倒排拉链
- 在
倒排拉链
中通过正排索引
获得对应一系列的文档内容 - 根据索引中的权重按高到低进行排序,组合成一个网页反馈给用户
热词排行榜
使用Redis
的Zset
用户输入的关键词分词后,在Zset
中查找,找到的话,就将对应的score
进行自增
每找到对应的关键词的话,就添加到Zset
中,设置初始的score=0
词频统计
使用前缀树
和优先级队列
,统计出现次数最高的几个词