# Search engine project **Repository Path**: xiao_unicorn6666/search-engine-project ## Basic Information - **Project Name**: Search engine project - **Description**: 本仓库为自己实现的一个基于Boots库的一个搜索引擎 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-13 - **Last Updated**: 2026-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Boost 站内搜索引擎 一款基于 Boost 文档的站内搜索引擎,为用户提供快速检索 Boost 在线文档的服务。 ## 项目简介 本项目是一款站内搜索引擎,专门用于检索 Boost C++ 库文档。用户输入查询关键词后,系统通过正排索引和倒排索引快速查找相关文档,并以 JSON 格式返回搜索结果。 ## 技术栈 - **后端**:C++11、STL、Boost 文件系统、cppjieba 分词、jsoncpp、cpp-httplib - **前端**:HTML5、CSS、JavaScript、jQuery、Ajax ## 项目结构 ``` ├── data/ │ ├── input/ # 原始 HTML 文档 │ └── raw_html/ # 去标签后的文本文件 ├── wwwroot/ # Web 前端资源 ├── parser.cc # 数据预处理模块 ├── index.hpp # 索引模块(正排+倒排) ├── search.hpp # 搜索引擎模块 ├── http_server.cc # HTTP 服务器 └── Makefile # 构建文件 ``` ## 核心模块 ### 1. 数据预处理模块 (Parser) - 递归遍历 HTML 文件目录 - 提取标题、内容、URL - HTML 标签清洗 - 输出格式化文本文件 ### 2. 索引模块 (Index) - **正排索引**:文档 ID → 文档信息 - **倒排索引**:关键词 → 文档列表(含权重) - 使用 cppjieba 进行中文分词 - 权重计算:标题词频 × 10 + 内容词频 ### 3. 搜索引擎模块 (Searcher) - 用户查询分词 - 倒排列表检索与合并 - 按相关性权重排序 - 生成搜索结果摘要 - JSON 序列化返回 ### 4. HTTP 服务器 - 基于 cpp-httplib 搭建 - 提供搜索 API:`/s?word=关键词` - 返回 JSON 格式搜索结果 ## 构建与运行 ### 依赖安装 ```bash # 安装 Boost 开发库 sudo yum install -y boost-devel # 安装 jsoncpp sudo yum install -y jsoncpp-devel # 安装 cpp-httplib(需手动下载或软链接) ``` ### 编译 ```bash make all ``` ### 运行 ```bash # 1. 先运行 parser 处理原始 HTML 文档 ./parser # 2. 启动 HTTP 服务器 ./http_server ``` ### 访问 浏览器访问:`http://服务器IP:8081` ## 搜索结果示例 查询 `filesystem` 返回结果包含: - 文档标题 - 内容摘要(含关键词上下文) - 原始文档 URL ## 项目扩展方向 1. 建立整站搜索 2. 设计在线更新方案(爬虫 + 索引更新) 3. 添加竞价排名功能 4. 热词统计与智能提示(字典树 + 优先级队列) 5. 用户登录注册(引入 MySQL) ## 许可证 MIT License