# BoostSearcher **Repository Path**: box-he-he/boost-searcher ## Basic Information - **Project Name**: BoostSearcher - **Description**: 基于C++实现的boost站内搜索引擎 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-25 - **Last Updated**: 2025-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Boost 搜索引擎 这是一个基于 C++ 实现的 Boost 文档搜索引擎,可以对 Boost C++ 库的文档进行全文检索。 ## 项目架构 该项目主要由以下几个模块组成: ### 1. 解析器 (Parser) - 递归遍历 Boost 文档目录下的所有 HTML 文件 - 使用状态机对 HTML 文件进行解析,提取标题、正文和 URL - 将解析结果保存为结构化文本文件 ### 2. 索引器 (Index) - 构建正排索引:通过文档 ID 快速访问文档内容 - 构建倒排索引:记录每个关键词在不同文档中的出现情况 - 实现单例模式,确保索引的唯一性 - 支持标题和内容的差异化权重计算 ### 3. 搜索器 (Searcher) - 对用户输入的查询词进行分词 - 检索倒排索引获取相关文档 - 基于权重对搜索结果进行排序 - 生成文档摘要,突出显示关键词上下文 ### 4. Web 服务器 (Server) - 基于 cpp-httplib 实现 HTTP 服务 - 返回 JSON 格式的搜索结果 ## 核心特性 - 中文分词:使用 cppjieba 进行中文分词 - 去停用词:过滤常见的停用词,提高搜索质量 - 权重计算:标题权重比正文更高,提供更准确的搜索排序 - 大小写不敏感:搜索时忽略大小写 - 文档摘要:自动提取关键词周边内容作为摘要 ## 依赖库 - Boost:文件系统操作 - cppjieba:中文分词 - cpp-httplib:HTTP 服务器 - jsoncpp:JSON 数据处理 ## 编译 ```bash make all ``` ## 使用方法 1. 运行解析器处理文档: ```bash ./parser ``` 2. 启动搜索服务: ```bash ./server ``` 3. 访问 `http://localhost:8081` 进行搜索 暂停词功能默认关闭,位于`util.hpp` 第 53 行。 ```cpp JiebaUtil() : jieba(DICT_PATH, HMM_PATH, USER_DICT_PATH, IDF_PATH, STOP_WORD_PATH) { InitStopWord(); // 注释该行代码关闭暂停词功能 } ``` 取消注释这行代码,即可开启暂停词功能,但是索引建立过程会大幅降低,需要很长时间启动项目。 ## API 接口 搜索接口:`GET /s?word=关键词` - 参数:word - 搜索关键词 - 返回:JSON 格式的搜索结果,包含标题、URL 和内容摘要 ## 项目结构 ```bash . ├── parser.cpp # HTML解析器 ├── index.hpp # 索引模块 ├── searcher.hpp # 搜索模块 ├── server.cpp # Web服务器 └── util.hpp # 工具类 ```