SearchEngine
开发环境
- 操作系统: Ubuntu 22.04
- 编程语言: C++11
- 构建工具: Make
- 数据库: Redis
技术栈
- 中文分词库: cppjieba
- 文本去重: simhash
- 计算机词语权重: TF-IDF
- 倒排索引: 用于快速检索文档
- 余弦相似度算法: 用于计算查询和文档的相似度
主要模块说明
- DictProducer: 负责创建词典{Word Frequency}和索引文件{Word idx1 idx2 …}
- PageLibPreprocessor: 负责网页库的预处理,包括网页去重和倒排索引的生成。
- Dictionary: 管理词典和索引,提供词频查询等功能。
- WebSearch: 实现网页搜索的核心逻辑,包括查询分词、文档检索和相似度计算。
- KeyRecommend: 实现关键词推荐功能,使用最小编辑距离算法。
- NetServer: 基于 Wfrest 的 HTTP 服务器,处理前端请求。
- Configuration: 管理配置信息,实现单例模式。
本项目的关键字推荐和网页搜索模块是单独的,在离线阶段完成了词典 词典索引 去重后的网页库 网页偏移库 倒排索引库
建立倒排索引是本项目的核心也是难点,目的是将单词或记录作为索引,将文档 ID 作为记录,
这样便可以方便地通过单词或记录查找到其所在的文档。
TF : Term Frequency, 某个词在文章中出现的次数;
DF: Document Frequency, 某个词在所有文章中出现的次数,即包含该词语的文档数量;
IDF: Inverse Document Frequency, 逆文档频率,表示该词对于该篇文章的重要性的一个系数,
其计算公式为:IDF = log2(N/(DF+1)),其中 N 表示文档的总数或网页库的文档数,
最后,词语的权重 w 则为:w = TF * IDF
- Title: SearchEngine
- Author: van
- Created at : 2024-09-26 15:24:24
- Updated at : 2024-11-17 13:00:31
- Link: https://xblog.aptzone.cc/2024/09/26/SearchEngine/
- License: All Rights Reserved © van
Comments