当前位置: 移动技术网 > IT编程>开发语言>正则 > Linux环境C++ 实战项目 小型搜索引擎(基于RSS)

Linux环境C++ 实战项目 小型搜索引擎(基于RSS)

2020年07月14日  | 移动技术网IT编程  | 我要评论

github源码:https://github.com/Worthy-Wang/mini_search_engine


项目简介

这是一款基于RSS的搜索引擎,项目展示成果如下:
在这里插入图片描述

项目架构

1.首先搭建好线程池,启动线程时都在等待任务队列出任务
2.启动封装好的服务器程序,当客户端发来请求时,将此请求封装成一个任务,加入任务队列,让子线程去完成该任务
3.搜索引擎类的封装,对于查询词的计算
在这里插入图片描述

项目流程

离线版本

  1. 建立网页库与网页偏移库
    技术亮点:开源库tinyxml2(DFS遍历节点), 正则表达式文件流字符串流操作, Unix目录操作单例模式(饿汉)
  2. 网页去重
    技术亮点: 开源库cppjieba分词set停词集合TopK算法(判断网页重复)
  3. 建立倒排索引
    技术亮点:unordered_map倒排哈希表TF-IDF算法(计算权重)

在线部分

  1. 搭建线程池框架
    技术亮点:基于对象线程池设计Posix线程类,互斥锁,条件变量任务队列自动加解锁类子线程安全退出机制回调函数智能指针unique_ptr
  2. 搭建服务器框架
    技术亮点:基于对象服务器设计回调函数socket网络编程IO多路复用epolleventfd(IO线程与计算线程分离)客户端安全退出机制智能指针shared_ptr
  3. 搭建搜索引擎框架
    技术亮点:文件流字符串流操作TF-IDF算法余弦相似度算法开源库jsoncpp

优化功能

  1. 使用mysql作为网页存储的数据库
  2. 使用redis作为Cache缓存

本文地址:https://blog.csdn.net/Worthy_Wang/article/details/107309474

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网