以诗之名

一、概述

这里是 以诗之名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
}
	            	

六、计划

下一步,我们计划实现可以组合朝代和作者的高级搜索,并计划更换网站运行空间,以存储更多诗词数据,提供更全面的搜索。

我们还计划做一个微信小程序版的 以诗之名,敬请期待。


祝您玩得开心,点此返回。