# BoostSearch **Repository Path**: chicken-c/boost-search ## Basic Information - **Project Name**: BoostSearch - **Description**: BoostSearch是一个基于bost文档的站内搜索引擎,当用户在页面上输入查询词后,就会快速的查询出相关 的Boost在线文档,弥补了Boost在线文档中没有搜索的缺陷。 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-03-14 - **Last Updated**: 2025-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 项目, Qt, Redis, muduo ## README # BoostSearch #### 项目介绍 技术栈:C++11、STL、jsoncpp、cppjieba、Redis、MySQL、Boost开发库、Docker等。 项目介绍: 用户通过输入框提交搜索关键词,系统后端进行快速索引查询,展示搜索结果,排序依据相关度。点击结果标题即 可跳转至 Boost 库详细文档。系统融合竞价广告模块,允许自定义广告内容与链接。此外,利用Redis实施热词统计,动 态更新热门词汇侧边栏展示。支持注册登录。同时提供 Qt Creator 开发的客户端,与服务器无缝对接。

项目底层采用自研并发服务器,借鉴 muduo 库设计,实行 One Thread One Loop 并发模型与主从 Reactor 模 式。主 Reacto 负责接入新连接,分配给子 Reactor 处理具体请求。子 Reactor 运行于单独线程,利用 epoll 实现异步 非阻塞 IO,高效处理并发请求,减少锁竞争和上下文切换,确保系统高性能。 #### 版本迭代介绍 boost-search 是一个基于 Boost 库构建的搜索引擎项目 项目采用了多种版本,也是我不断学习和迭代的过程。 v1: 实现了最基本的功能,直接基于httplib进行了服务的搭建 v2: 主要对于底层进行升级,将httplib替换为仿照 muduo 库实现的 one-thread-one-loop 式并发服务器架构。这种架构设计旨在提供高效且易于管理的网络通信能力,以支持高性能的搜索服务,并对其进行了http协议的封装,可以调用http的请求,相关并发服务器源码可参考:

[仿muduo高并发服务器](https://gitee.com/chicken-c/reactor-server) #### 安装教程 本项目已成功实现Docker容器化,通过精心设计的Docker Compose文件,实现了服务的高效编排与配置管理。 具体安装可去version1目录查看。 #### 使用说明 在浏览器中 通过 ip:port(8080) 进行访问。 这里的端口硬编码进代码为8080 #### 目录结构 AutoTest 是对该项目实现的 web自动化测试
boost_search是对该项目实现的 接口自动化测试
version1-httplib 是该项目的第一个版本
version2-muduo 是该项目的第二个版本
#### 竞价排名 竞价模块: 项目中集成了一个竞价系统。在 data 目录下的 ad 文件夹中,存放有 ad.txt 文件,用于添加竞价条目。每行条目应包含标题、内容、网址及竞价价格(各元素间用空格分隔)。竞价价格直接影响条目的权重,价格越高,权重越大。 数据更新: 当需要更新竞价信息时,无需重启服务端。只需对该服务 http_server 发送三号信号(kill [pid] 3),即可完成竞价排名信息的更新。 #### 客户端 基于Qt Creator开发的客户端: 在项目目录中存在一个快捷方式,该方式可以快速运行Qt客户端。