Linux环境C++ 实战项目 小型搜索引擎(基于RSS)
程序员文章站
2022-03-11 09:27:58
github源码:https://github.com/Worthy-Wang/mini_search_engine项目简介这是一款基于RSS的搜索引擎,项目展示成果如下:项目架构1.首先搭建好线程池,启动线程时都在等待任务队列出任务2.启动封装好的服务器程序,当客户端发来请求时,将此请求封装成一个任务,加入任务队列,让子线程去完成该任务3.搜索引擎类的封装,对于查询词的计算程序编写流程离线版本建立网页库与网页偏移库技术亮点:开源库tinyxml2(), 正则表达式,文件流字符...
github源码
:https://github.com/Worthy-Wang/mini_search_engine
项目简介
这是一款基于RSS的搜索引擎,项目展示成果如下:
项目架构
1.首先搭建好线程池,启动线程时都在等待任务队列出任务
2.启动封装好的服务器程序,当客户端发来请求时,将此请求封装成一个任务,加入任务队列,让子线程去完成该任务
3.搜索引擎类的封装,对于查询词的计算
项目流程
离线版本
- 建立网页库与网页偏移库
技术亮点:开源库tinyxml2(DFS遍历节点)
,正则表达式
,文件流字符串流操作
,Unix目录操作
,单例模式(饿汉)
- 网页去重
技术亮点:开源库cppjieba分词
,set停词集合
,TopK算法(判断网页重复)
- 建立倒排索引
技术亮点:unordered_map倒排哈希表
,TF-IDF算法(计算权重)
在线部分
- 搭建线程池框架
技术亮点:基于对象线程池设计
,Posix线程类,互斥锁,条件变量
,任务队列
,自动加解锁类
,子线程安全退出机制
,回调函数
,智能指针unique_ptr
- 搭建服务器框架
技术亮点:基于对象服务器设计
,回调函数
,socket网络编程
,IO多路复用epoll
,eventfd(IO线程与计算线程分离)
,客户端安全退出机制
,智能指针shared_ptr
- 搭建搜索引擎框架
技术亮点:文件流字符串流操作
,TF-IDF算法
,余弦相似度算法
,开源库jsoncpp
优化功能
- 使用mysql作为网页存储的数据库
- 使用redis作为Cache缓存
本文地址:https://blog.csdn.net/Worthy_Wang/article/details/107309474