3.4K ·GitHub
Что это такое?
Быстрый API-сервис для классической китайской поэзии, написанный на Go: отдаёт и REST, и GraphQL на наборе данных почти из 400 000 стихотворений — танские стихи, сунские_ci, юаньские цюй и не только.
Это библиотека, которую я подключаю, или отдельный сервер, который я разворачиваю?
Это отдельный сервер, который вы разворачиваете сами (через Docker или сборку Go), а не библиотека для импорта в свой код.
Как его запустить?
Склонируйте репозиторий вместе с Git-сабмодулями, чтобы подтянуть данные со стихами, затем запустите через Docker Compose (рекомендуется, конфиг в docker-compose.yml) либо соберите и запустите с помощью прилагаемого Makefile.
Данные со стихами нужно скачивать отдельно?
Да, сами стихи лежат в отдельном репозитории-сабмодуле (это форк chinese-poetry с исправленными опечатками), поэтому клонировать нужно с сабмодулями или, если вы уже склонировали без них, выполнить submodule update.
Есть ли ограничения на то, сколько запросов я могу делать?
Да, там есть встроенное ограничение частоты запросов по IP, специально чтобы защитить публичный API от злоупотреблений.
Docker-образ работает на ARM-серверах или только на x86?
Docker-образ мультиархитектурный: поддерживаются и amd64, и arm64.
Насколько большая база стихов?
Около 400 000 записей: 82 744 семисловных цзюэцзюй, 68 696 семисловных люйши, 21 347 сунских ци, 10 904 юаньских цюй, плюс «Шицзин», «Чуцы» и другое.
Какие виды поиска поддерживает API?
По умолчанию — полнотекстовый поиск (?q=月), а через параметр type доступны отдельные режимы поиска по названию, содержимому и автору.
Можно получать результаты и на упрощённом, и на традиционном китайском?
Да, каждый эндпоинт принимает параметр lang (zh-Hans или zh-Hant) для переключения между упрощённым и традиционным китайским; оба хранятся в одной базе.
Насколько быстрое преобразование между упрощённым и традиционным написанием?
Конвертация оптимизирована под многопоточность и выполняется примерно за 300 нс на операцию, с использованием библиотеки gocc.
What are similar projects?
tyk, zincsearch, typesense, pansou, reaction, dgraph, cube, claude-relay-service
Which topics is it in?
rate-limiting, full-text-search, arm64, chinese-language, graphql, dataset, search, i18n, docker-compose, rest-api, backend, gplv3