e1915c9ddecf808f13222826dbf8703666dc4868
sese-engine Go 重构版
Python 原版的 Go 语言重构,使用标准英文命名,单二进制部署。
目录结构
sese-engine-go/
├── main.go # 主入口,goroutine 启动所有模块
├── go.mod
├── config/
│ └── config.go # 全局配置参数
├── storage/
│ ├── types.go # 核心数据类型定义
│ └── store.go # Redis + MySQL 存储层
├── crawler/
│ ├── crawler.go # BFS 爬虫调度
│ └── fetcher.go # HTTP 获取 + robots.txt + 限流
├── parser/
│ └── parser.go # HTML 解析
├── analyzer/
│ └── analyzer.go # 分词 + 关键词权重 + 语言检测
├── search/
│ └── server.go # 搜索 API + 收获服务
├── backlink/
│ └── backlink.go # 反向链接计算
└── info/
└── info.go # 繁荣表 / 调整表 / 屏蔽词
依赖项
| Go 包 | 用途 |
|---|---|
github.com/yanyiwu/gojieba |
中文分词 |
github.com/pemistahl/lingua-go |
语言检测(内置模型) |
github.com/redis/go-redis/v9 |
Redis 客户端(高性能内存存储) |
github.com/go-sql-driver/mysql |
MySQL 驱动(持久化存储) |
github.com/andybalholm/brotli |
Brotli 压缩 |
golang.org/x/net/html |
HTML 解析 |
构建与运行
# 下载依赖(需要 CGo 编译器,用于 gojieba)
go mod tidy
# 构建
go build -o sese-engine .
# 运行
./sese-engine --storage ./savedata --entry https://zh.wikipedia.org/
架构说明
- Redis:高性能内存存储,用于实时索引读写
- MySQL:持久化存储,用于数据备份和复杂查询
- 内存聚合:写入先到 Redis,定期合并到 MySQL
注意事项
- CGo 依赖:gojieba 需要 C/C++ 编译器(gcc/clang)。
- Redis + MySQL:需要提前部署并配置连接参数。
- 配置文件:
config/config.yml中配置数据库连接信息。
Languages
Go
98.4%
Shell
1.6%