源码戳这里
Boost 文档搜索是基于 boost 文档的一个站内搜索引擎,当用户在页面上输入查询词后,就能查询出相关 boost 的在线文档。
具体搜索过程:
- 对离线版本的 html 文档进行解析,并将解析结果放到一个文本文件中
- 读取处理好文本进行分词以及权重计算等过程,构建出正排索引和倒排索引
- 对查询词进行分词,根据查询词的分词结果进行倒排索引查找,将结果按照权重进行排序
- 通过 HTTP 服务器搭载搜索页面提供服务
整个项目分为四个模块:预处理模块、索引模块、搜索模块、服务器模块
预处理模块
- 输入路径,提取出所有的 html 文档
- 读取 html 文档,解析出标题、url、正文
- 用 ‘\3’ (不可见字符)对解析出的标题、url 和 正文进行分隔,每一个 html 为一行,存储在文件中
索引模块
- 读取文本文件,用 jieba 分词对文章正文进行分词
- 通过统计词频来计算出某个文档中某个词的权重,标题中的词占得权重适当多一些
- 构造正排索引和倒排索引。正排索引就是通过文档的 id 找到文档的信息,而倒排索引就是通过文档内容找到对应文档的 id
搜索模块
- 用 jieba 对查询词进行分词
- 用查询词分词后的结果进行倒排索引找到相关的文档
- 根据查询词在文档中权重的高低,对搜索到的文档进行排序,权重高的展示的靠前
- 根据文档 id 在正排索引中查询到文档信息后,以 json 格式展示
服务器模块
- 将 HTTP 服务器挂载搜索页面