SearchEngine

SearchEngine

van 知其变,守其恒,为天下式.

开发环境

  • 操作系统: Ubuntu 22.04
  • 编程语言: C++11
  • 构建工具: Make
  • 数据库: Redis

技术栈

  • 中文分词库: cppjieba
  • 文本去重: simhash
  • 计算机词语权重: TF-IDF
  • 倒排索引: 用于快速检索文档
  • 余弦相似度算法: 用于计算查询和文档的相似度

主要模块说明

  1. DictProducer: 负责创建词典{Word Frequency}和索引文件{Word idx1 idx2 …}
  2. PageLibPreprocessor: 负责网页库的预处理,包括网页去重和倒排索引的生成。
  3. Dictionary: 管理词典和索引,提供词频查询等功能。
  4. WebSearch: 实现网页搜索的核心逻辑,包括查询分词、文档检索和相似度计算。
  5. KeyRecommend: 实现关键词推荐功能,使用最小编辑距离算法。
  6. NetServer: 基于 Wfrest 的 HTTP 服务器,处理前端请求。
  7. 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-10-13 05:19:15
  • Link: https://xblog.aptzone.cc/2024/09/26/SearchEngine/
  • License: All Rights Reserved © van
Comments
On this page
SearchEngine