Tangseng 基于Go语言的搜索引擎

项目详细内容地址点击这里

项目大体框架&功能

  1. gin作为http框架,grpc作为rpc框架,etcd作为服务发现。
  2. 总体服务分成用户模块收藏夹模块索引平台搜索引擎(文字模块)搜索引擎(图片模块)
  3. 分布式爬虫爬取数据,并发送到kafka集群中,再落库消费。 (虽然爬虫还没写,但不妨碍我画饼...)
  4. 搜索引擎模块的文本搜索单独设立使用boltdb存储index,mapreduce加速索引构建并使用roaring bitmap存储索引。
  5. 使用trie tree实现词条联想(后面打算加上算法模型辅助词条联想)。
  6. 图片搜索使用ResNet50来进行向量化查询 + Milvus or Faiss 向量数据库的查询 (开始做了... DeepLearning也太难了...)。
  7. 支持多路召回,go中进行倒排索引召回,python进行向量召回。通过grpc调用连接,进行融合。
  8. 支持TF-IDF,BM25等等算法排序。

项目大体框架

🧑🏻‍💻 前端地址

all in react, but still coding

react-tangseng

未来规划

架构相关

功能相关

文本搜索

快速开始

环境启动!

make env-up

小小数据集就在 source_data/movies_data.csv

Python 启动!

  1. 确保电脑已经安装了python,确保python version>=3.9,我的版本是3.10.2

    python --version
    
  2. 安装venv环境

    python -m venv venv
    
  3. 激活 venv python 环境

    macos:

    source venv/bin/activate
    

    windows:

    等我清完C盘再兼容一下...还没在win上跑过...

  4. 安装第三方依赖

    pip install -r requirements.txt
    
  5. 启动主程序

    sh python-start.sh
    
  6. 启动脚本构建索引

    make python-consume
    

Golang 启动!

golang version >= go 1.16 即可。我的go版本是 1.18.6

  1. 下载第三方依赖包

    go mod tidy
    
  2. 目录下执行

    make run-xxx(user,favortie ...)
    # e.g:
    # make run-user
    # make run-favorite
    # 具体看makefile文件
    

开源贡献

在提交pr之前,请查看 CONTRIBUTING_CN.md