欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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的搜索引擎,项目展示成果如下:
Linux环境C++ 实战项目 小型搜索引擎(基于RSS)

项目架构

1.首先搭建好线程池,启动线程时都在等待任务队列出任务
2.启动封装好的服务器程序,当客户端发来请求时,将此请求封装成一个任务,加入任务队列,让子线程去完成该任务
3.搜索引擎类的封装,对于查询词的计算
Linux环境C++ 实战项目 小型搜索引擎(基于RSS)

项目流程

离线版本

  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