一个Docker命令,40万首古诗词API开箱即用

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

在开发国风应用、诗词学习工具或文化类小程序时,最耗时的往往不是前端页面,而是底层数据的整理与检索。从零开始搭建一套包含近 40 万首诗词的数据库,并完成清洗、分类、搜索接口的开发,足以让项目还没开工就耗掉大半精力。

诗泉(Chinese Poetry API)正是为了解决这个痛点而生。它是一个基于 Go 语言开发的高性能中国古诗词 API 服务,将海量诗词数据转化为开箱即用的标准化接口,让开发者可以专注于内容呈现,而非数据工程。

02 简介

诗泉(Chinese Poetry API)基于 chinese-poetry的数据集,通过Go语言构建高性能中国古诗词 API 服务,支持 REST 和 GraphQL 接口,提供简体/繁体中文、爬虫练习场等功能。

GitHub地址:github.com/palemoky/ch...

官网地址(在线体验):poetry.palemoky.com/

数据源地址:

GitHub地址:github.com/chinese-poe...

官网地址:awesome-poetry.top/huajianji/

2.1 数据集

数据集包括:

整体数据规模接近 40 万条,按标题、正文、作者、朝代、体裁等维度进行了结构化整理。

2.2 搜索

提供了支持多种搜索方式,满足不同场景需求:

2.3 双接口支持

同时提供 REST API 和 GraphQL API,适应不同技术栈和开发习惯:

  • REST API:简单直观,适合快速集成
  • GraphQL:灵活查询,按需获取字段,减少数据传输

2.4 简繁转化

同一数据库同时存储简体和繁体中文,通过 ?lang= 参数自由切换:

  • zh-Hans:简体中文(默认)
  • zh-Hant:繁体中文

对于面向不同地区用户的阅读产品,无需维护两套内容。

03 Docker部署

直接拉取镜像:

bash 复制代码
docker run -d -p 1279:1279 palemoky/chinese-poetry-api:latest

也可以同过克隆项目构建Docker镜像实现。

在启动镜像的时候会下载数据库(data/poetry.db),需要耐心等待一下。可通过

bash 复制代码
docker logs -f 容器ID

命令查看下载的进度:

可能因为机器版本的问题导致数据集无法下载:

可以通过自己下载数据集,直接挂载即可:

bash 复制代码
-v /opt/chinese-poetry-data/data:/app/data

数据库的下载可以通过AI修复下载,也可以通过官网手动下载:

我这边是通过AI直接修复的,不在赘述。提供一下最终修复的脚本:

bash 复制代码
docker run -d -p 1279:1279 \
  --security-opt seccomp=unconfined \
  -v /opt/chinese-poetry-data/data:/app/data \
  --name poetry-test \
  palemoky/chinese-poetry-api:latest \
  sh -c "exec ./server"

04 测试

这边测试以REST API为例。

4.1 随机获取一首(简体)

bash 复制代码
curl "http://localhost:1279/api/v1/poems/random"

4.2 随机获取一首(繁体)

bash 复制代码
curl "http://localhost:1279/api/v1/poems/random?lang=zh-Hant"

4.3 搜索诗词

bash 复制代码
curl "http://localhost:1279/api/v1/poems/search?q=静夜思"

其他更多的接口可以参考官方文档:poetry.palemoky.com/

05 小结

诗泉不是一款完整的诗词学习软件,而是一个已经准备好的数据基础设施层。围绕它,可以快速构建一些非常有意思的小插件,如之前非常火的诗词大会中的飞花令、以及诗词类的小游戏等

如果你正在开发国风应用、诗词学习工具,或需要为中国传统文化项目提供数据支撑,诗泉值得放入你的技术选型清单。

相关推荐
FYKJ_20102 小时前
SSM校园失物招领系统41452-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·typescript·spark
kv1102 小时前
Android studio国内开发有关
java·数据库·android studio
卓怡学长2 小时前
w198基于springboot始于足下健康打卡平台的设计与实现
java·spring boot·spring·intellij-idea
阿狗童鞋2 小时前
Java并发编程实战指南
java·开发语言
子兮曰2 小时前
Node.js 50个优势场景盘点:一个人单干,为啥我多数时候只用它
前端·后端
IT_陈寒2 小时前
我花3小时debug,就因为JavaScript这个隐式转换坑
前端·人工智能·后端
Joe_Wang53 小时前
【从0到1学习JVM · 15】对象在堆里来回倒腾,究竟怎样才会进老年代?
java·jvm·学习·垃圾回收
程序猿阿越3 小时前
containerd如何拉取镜像
后端·kubernetes·源码阅读
一条小小yu3 小时前
为什么使用springboot
java·spring boot·后端
Elastic 中国社区官方博客3 小时前
Kubernetes attributes processor v1:它对 EDOT Collector 意味着什么
java·大数据·elasticsearch·搜索引擎·贪心算法·kubernetes·全文检索