# 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客户端。