# boost搜索引擎项目 **Repository Path**: q1479527934/boost-search-engine-project ## 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-01-22 - **Last Updated**: 2025-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Boost搜索引擎项目简介 ## 1 技术栈和项目环境 - **技术栈**:`C++11`,`STL`,`Boost`,`jsoncpp`,`cppjieba`,`cpp-httplib` - **项目环境**:Ubuntu 18.04 ## 2 主要模块功能 ### 2.1 解析器parser 1. 将指定目录(./boost\_searcher/data/input)下的目标文件(.html)筛选并导入。 2. 解析文件,去除文件内的标签,取得文件的标题、内容和url。文件(.html)中的标签即由`<>`包围的内容,其中标题为双标签``和``之间的部分。 3. 将解析后的文件以指定格式(文件内部以'`\3`'分隔,文件间以'`\n`'分隔)保存至目标文件(./boost\_searcher/data/raw\_html/raw.txt)。 ### 2.2 索引index #### 2.2.1 正排索引 - 正排索引通过文档编号映射到文档内容(parser解析后的各内容)。可以通过文档编号获取文档内容。 - **建立正排索引表**:将解析后的文件导入,按照parser中的分隔方式重新构建各个文件的信息结构,并将构建好的文件信息存入正排索引表中。 #### 2.2.2 倒排索引 - 倒排索引通过关键字映射到倒排拉链,倒排拉链是由该与关键字有关的文件id构成的列表。 使用倒排索引,可以通过关键字查找到相关文件的id,并通过权重反映相关性强弱。 - **建立倒排索引**:使用`jieba`对目标文件的标题和内容进行分词,并统计分词后得到的各关键字在标题中和内容中出现的频率,将频率按照一定的权值(本项目为标题权值10,内容权值1)计算出该关键字对该文档的查找权重。完成后,将该文档信息加入所有关键字的倒排拉链。 ### 2.3 查找模块searcher - 查找前应先建立索引。 - 查询结构用于反映一次查找中某文档包含的关键字及其关键字**权重和**,以此**权重和**作为查找排序依据。 - **建立倒排查询结构映射**:首先对用户输入的查询关键字进行分词,然后查找所有关键字的倒排索引,将关键字及查找权重加入查询结构。建立完毕后按照查询结构权重降序排序。 - 将排序后的文档信息转化为json格式输出。