# Boost **Repository Path**: xixi-sakura/boost ## Basic Information - **Project Name**: Boost - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-11 - **Last Updated**: 2025-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Boost搜索引擎 Boost搜索引擎是一个针对Boost官网文档的站内搜索项目,旨在为用户提供便捷的文档检索服务,以下是对该项目的详细介绍: 1. **项目背景**:在实际应用中,像百度、搜狗等大型搜索引擎实现难度极大,而站内搜索因其数据更垂直、量小,开发相对可行。Boost官网缺乏站内搜索功能,这为该项目的诞生提供了契机,以满足用户对Boost官网文档快速检索的需求。 2. 3. **技术原理** - **宏观原理**:客户端借助GET方式向服务器上传搜索关键字,服务器端则通过浏览器以http请求的形式开展搜索任务。在此过程中,服务器会对数据进行去标签和清理操作,随后建立索引,最后将多个网页的title、description和url进行拼接,构建成新的网页反馈给用户。 - **正排与倒排索引**:正排索引是依据文档ID获取文档内容,而倒排索引是先对目标文档分词,去除停止词后,依据文档内容中的关键字关联对应的文档ID。例如,对于“雷军买了四斤小米”和“雷军发布了小米手机”两篇文档,经过分词处理后,像“雷军”“小米”等关键字会与相应文档ID建立联系。搜索时,用户输入关键字,如“小米”,系统先在倒排索引中查找,提取文档ID,再借助正排索引获取文档内容,最终完成搜索结果的构建 。 - 4. **技术栈与环境** - **技术栈**:主要运用C/C++、C++11、STL等基础语言和库,同时借助准标准库Boost、Jsoncpp、cppjieba、cpp-httplib等实现各项功能。此外,还可选学html5、css、js、jQuery、Ajax等技术用于前端开发。 - **项目环境**:选用Centos 7云服务器作为运行环境,利用vim/gcc(g++)/Makefile进行代码编写和编译,也可使用vs2019或vs code作为开发工具。 - 5. **模块构成** - **数据处理模块(Parser)**:负责读取原始html文件,去除其中的标签,提取文档的标题、内容和url,并将处理后的文档按特定格式写入文件,如以“title\3content\3url \n”的形式存储,便于后续读取。 - **索引构建模块(Index)**:构建正排索引和倒排索引。正排索引采用数组形式,数组下标即为文档ID,存储文档的详细信息;倒排索引借助分词和词频统计,建立关键字与文档ID及权重的映射关系,权重根据词在标题和内容中的出现频率自定义计算 。 - **搜索核心模块(Searcher)**:接收用户输入的搜索关键字,先进行分词处理,然后在索引中查找相关信息,将查找结果按照相关性(weight)进行降序排序,最后使用jsoncpp库构建json格式的搜索结果返回给用户。 - **服务交互模块(http_server)**:基于cpp-httplib库搭建http服务器,用于接收用户的搜索请求。服务器接收到请求后,调用Searcher模块进行搜索,并将搜索结果返回给用户。在使用cpp-httplib库时,若服务器的gcc版本较低,可能需要升级gcc以确保库的正常运行。 - **前端展示模块**:运用html搭建网页结构,css美化页面样式,js实现动态效果和前后端交互功能。用户在前端界面输入搜索关键字,点击搜索按钮后,通过JQuery发起ajax请求,将搜索关键字发送到后端,后端处理后返回结果,前端再根据返回结果动态更新页面展示搜索结果。