1 Star 4 Fork 1

prookie01 / 搜索引擎

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
搜索引擎项目说明文档.md 3.36 KB
一键复制 编辑 原始数据 按行查看 历史

搜索引擎

介绍

一个简单的搜索引擎,主要实现了Linux下的服务端与客户端,实现了两个具体功能:1.关键字推荐、2.网页搜索,使用到的第三方库:结巴(切词用)、json(数据序列化)、log4cpp(日志)、simhash(计算网页相似度)

软件架构

简介:本系统属于某公司的内部使用的服务器,我和朋友利用闲暇时间又写了一个版本复刻,总体功能已经基本实现,但是可能仍有不足之处。

1.总体服务器架构使用的是 Linux下的IO多路复用 + 线程池 + C++的同步reactor服务器框架,主线程为I/O线程,处理数据的收发,子线程为工作/计算线程,处理数据的计算和复杂逻辑。

2.服务器端主要功能为两个:

关键字查询:根据生成的本地字典库文件,把相关文件导入到内存中,根据最短路径算法求出优先队列符合查询结果的5个候选词,再组包为json字符串发送过来,或者返回json空串,当用户向服务器发起查询请求后会先在Redis中检查是否已经存在对应的结果,存在立即返回,反之向内存中进一步查找,没有则返回空串。

网页查询:根据本地网页索引库文件,把索引库文件导入内存,基本逻辑同上,计算网页相似度采用simhash算法,返回前30个相关性强的网页标题、链接、摘要。

简单的流程图

输入图片说明

安装教程

  1. 首先先安装redis数据库,需要redis做缓存优化查询速度

    这个安装很简单,百度即可
  2. 安装hiredis库,用以连接所需要的redis数据库

    https://github.com/redis/hiredis
    git clone https://github.com/redis/hiredis.git
    tar -xzvf hiredis.tar.gz
    cd hiredis
    make
    sudo make install //将可执行程序赋值到/usr/local/bin目录中,当执行程序中就不要输入完
    整的路径
    sudo ldconfig (更新动态库配置文件) /usr/local/lib
    make test //测试redis是否编译正确
    //编译时需要加上的后缀
    g++ xxx.c -o xxx -I /usr/local/include/hiredis -lhiredis
    或者直接g++ xxx.cc -lhiredis
  3. 安装json做数据序列化使用

    https://github.com/nlohmann/json
    //编译安装
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
  4. 安装log4cpp库,做日志的记录

    这个安装比较麻烦,自行百度或者csdn,有详细安装教程

使用说明

  1. 先使用最外层Makefile生成四个可执行程序,在bin目录下
  2. 使用createLibDict 和 pageLibOffline 生成对应的网页库和字典库的索引文件
  3. 启动服务器
  4. 启动客户端
  5. 若因为IP等问题导致链接失败,可通过修改配置文件中的ip、port更改属性

参与贡献

做面试用,详细信息私聊

特技

客户端启动后如图所示:

1.关键字查询功能:

输入图片说明

2.网页检索功能:

输入图片说明

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/prookie01/search-engines.git
git@gitee.com:prookie01/search-engines.git
prookie01
search-engines
搜索引擎
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891