以诗之名
一、概述
这里是 以诗之名2.0,搜索一个名字恰好存在于哪句古诗词中。作者:
二、前端
在前端中,我们使用了UI框架SUI Mobile和滑动组件Swiper,为使文字更加漂亮,我们使用了汉字标准格式,并使用有字库作为云字库。
在此统一对以上项目表示感谢,感谢它们让世界变得更加美好。
三、后台
后台由php和mysql驱动,布署在coding的动态pages服务。
四、数据
数据来源于Github上的开源诗词数据库。原数据共有从先秦到现代的共计85万余首诗词,但由于本站所在空间的大小限制,不得不忍痛割爱,删除部分诗词。删除了朝代为当代、明、清、明末清初、元末明初、清末民国初、清末近现代初、宋末元初、近现代末当代初、金末元初、民国末当代初、唐末宋初和宋末金初的共438807首诗词。删除后剩余409,653首诗词,统计信息如下:
-
宋286441
-
唐49194
-
元35811
-
近现代25733
-
南北朝4586
-
魏晋3020
-
金2741
-
隋1170
-
先秦570
-
汉363
-
辽22
-
秦2
用户搜索诗词时,可以按照朝代或作者进行过滤,这是计划实现的高级搜索功能的雏形。然而在剩余的数据——也就是目前本站正在使用的数据——中,共有接近一万五千名不同的诗词作者。将这么多作者放在一个列表中供用户选择不是一个好主意。故而我们挑选了作品数量最多、知名度最大的十几位作者供用户快捷选择。
五、API接口
本站提供如下的两个API接口,您可以在自己的应用中调用。但我们对接口的稳定性不做任何保证,毕竟该项目是两个学生闲暇时作为娱乐所写。
所有接口均返回JSON格式数据,返回数据中“ret”为0表示成功,为其他值表示失败,失败时错误信息写在“msg”中。
1.搜索姓名接口
位置:/api/search.php
方法:GET
参数:
-
keyword无默认值,必须
-
author无默认值,非必须
-
dynasty无默认值,非必须
-
limit默认值为10,非必须
-
page默认值为1,非必须
示例:/api/search.php?keyword=马云&limit=2&page=1
示例返回:
{ "ret": 0, "msg": "success", "total": 2, "keyword": "马云", "result": [ { "title": "塞上忆汶水", "author": "曹元用", "dynasty": "元代", "content": "沙碛秋高苑马肥,哀笳一曲塞云飞。", "sentence": 1, "id": 1231298 }, { "title": "塞下曲二首·其二", "author": "王涯", "dynasty": "唐代", "content": "不知马骨伤寒水,惟见龙城起暮云。", "sentence": 2, "id": 1231292 } ] }
2.查询诗词接口
位置:/api/poetry.php
方法:GET
参数:
-
id无默认值,必须
-
sentence无默认值,非必须
参数sentence存在时返回诗词的第sentence句,否则返回全诗。
示例:/api/poetry.php?id=1231292
示例返回:
{ "ret": 0, "msg": "success", "title": "塞下曲二首·其二", "author": "王涯", "dynasty": "唐代", "content": "年少辞家从冠军,金鞍宝剑去邀勋。不知马骨伤寒水,惟见龙城起暮云。", "id": 1231292 }
六、计划
下一步,我们计划实现可以组合朝代和作者的高级搜索,并计划更换网站运行空间,以存储更多诗词数据,提供更全面的搜索。
我们还计划做一个微信小程序版的 以诗之名,敬请期待。
祝您玩得开心,点此返回。