2026-04-09 11:28:43 +08:00
up
2026-04-09 11:05:02 +08:00
up
2026-04-09 00:14:55 +08:00
up
2026-04-09 00:14:55 +08:00
2026-04-08 17:48:05 +08:00
2026-04-08 17:48:05 +08:00
up
2026-04-09 11:28:43 +08:00
up
2026-04-09 00:15:40 +08:00
up
2026-04-09 11:28:43 +08:00
up
2026-04-08 23:07:07 +08:00
up
2026-04-08 23:35:50 +08:00
up
2026-04-08 23:35:50 +08:00
up
2026-04-08 23:07:07 +08:00
up
2026-04-09 11:28:43 +08:00

sese-engine Go 重构版

Python 原版的 Go 语言重构,使用标准英文命名,单二进制部署。

目录结构

golang/
├── main.go              # 主入口,goroutine 启动所有模块
├── go.mod
├── config/
│   └── config.go        # 全局配置参数(对应 配置.py)
├── storage/
│   └── storage.go       # bbolt 持久化层(对应 存储.py,替换 rimo_storage
├── crawler/
│   ├── crawler.go       # BFS 爬虫调度(对应 上网.py
│   └── fetcher.go       # HTTP 获取 + robots.txt + 限流(对应 虫.py
├── parser/
│   └── parser.go        # HTML 解析(对应 文.py
├── analyzer/
│   └── analyzer.go      # 分词 + 关键词权重(对应 分析.py + utils.py 分词部分)
│                          使用 gojieba(中文)+ gofasttext(语言检测)
├── harvester/
│   └── harvester.go     # 索引写入服务,监听 :5000(对应 收获服务器.py)
├── search/
│   └── server.go        # 搜索 API,监听 :80(对应 人服务器.py
├── backlink/
│   └── backlink.go      # 反向链接计算,每 48h 运行(对应 回.py)
└── info/
    └── info.go          # 繁荣表 / 调整表 / 屏蔽词加载(对应 信息.py)

依赖项

Go 包 替代 Python 包 用途
github.com/yanyiwu/gojieba jieba 中文分词
github.com/nicholasgasior/gofasttext fasttext 语言检测
go.etcd.io/bbolt rimo_storage KV 存储 / 倒排索引
github.com/andybalholm/brotli brotli 压缩
golang.org/x/net/html lxml HTML 解析
golang.org/x/net/html/charset chardet 编码检测

构建与运行

cd golang

# 下载依赖(需要 CGo 编译器,用于 gojieba / gofasttext
go mod tidy

# 构建
go build -o sese-engine .

# 运行(在 sese-engine 项目根目录下)
cd ..
./golang/sese-engine \
  --storage ./savedata \
  --entry   https://zh.wikipedia.org/ \
  --fasttext ./lid.176.ftz \
  --stopwords ./data/标点符号.json

一个进程启动所有模块:

  • :5000 — 收获服务器(爬虫推送关键词)
  • :80 — 搜索 APIGET /search?q=关键词
  • 后台 goroutine — BFS 爬虫
  • 后台 goroutine — 每 48 小时反向链接计算

与 Python 版的主要差异

方面 Python 版 Go 版
并发 GIL + 线程池(假并发) goroutine 真并发
存储 rimo_storage(自研) bbolt(嵌入式 KV
部署 需要 Python 环境 单二进制,无运行时依赖
命名 全中文 标准英文
进程数 3~4 个进程 1 个进程多 goroutine
编码检测 requests 自动检测 golang.org/x/net/html/charset
Prometheus 可选 暂未集成(可后续添加)

注意事项

  1. CGo 依赖gojieba 和 gofasttext 均需要 C/C++ 编译器(gcc/clang)。 Windows 下建议使用 MinGW 或 WSL。
  2. fasttext 模型lid.176.ftz 需要与 Python 版共用,路径通过 --fasttext 指定。
  3. 数据迁移:存储格式(bbolt JSON)与 Python 版(rimo_storage 二进制)不兼容, 需要全新爬取,或编写迁移脚本。
  4. stop words 文件:复用 Python 版的 data/标点符号.json
S
Description
No description provided
Readme
137 MiB
Languages
Go 98.4%
Shell 1.6%