検索の Web API
「全文検索」と「和歌を探す」は、ほかのサイトのページやプログラムからも使えます。結果は JSON で返します。ほかのサイトのブラウザから直接呼べるように、どの送り元からの呼び出しも許しています(CORS)。登録や鍵は要りません。
引数を入れて試せる画面: api/docs/(Swagger UI)。定義(OpenAPI 3.1): api/openapi.json。定義を読み込めば、クライアントを自動で作ったり、Postman などに取り込んだりできます。
- 呼び出しは
GETだけです。URL はhttps://informanellica.com/kumoi-no-fumigura/api/…です。 - 送り元ごとに、全文検索・和歌それぞれ 1 分 60 回までです。超えると 429 を返します(
Retry-Afterの秒数のあとに呼び直してください)。 - サーバーを起動した直後は、索引を読み終えるまで 503 を返します(
Retry-Afterの秒数のあとに呼び直してください)。 - 検索語は 50 字までです。正規表現としては解釈せず、文字列の部分一致で探します。
- 旧字と新字、カタカナとひらがな、踊り字(ゝ・〳〵)、変体仮名(𛁈 など)は、そろえてから照らします。
- 本文と訳は CC0 1.0 です(α公開版のため変更の可能性があります)。本文の多くは OCR から起こしたもので、誤りを含みます。
全文検索 /api/search
作品の本文(散文の段落と作中歌)と訳から探します。作品ごとにまとめて返します。
| 引数 | 意味 |
|---|---|
q | 探す言葉(必須) |
w | 作品 ID で絞る(例: kt-kokin)。作品 ID は作品のページの URL の work= の値です |
cat | 分類で絞る(例: 物語・日記・歌合) |
q2・near | 一緒に出る言葉と、その近さ(字数。0 は同じ段落のどこか。100 まで) |
yaku=0 | 訳を探さない(既定は訳も探す) |
fuzzy=0 | あいまい検索(ゆるい仮名遣いと、かなと漢字の言い換え)をしない |
conj=0 | 活用した形をまとめて探さない(既定は 待つ → 待た・待ち… も探す) |
modern=1 | 近代歌集(明治以降)も探す(既定は外す) |
lemma | 語彙素を 1 つに決める(例: 思う)。平安〜室町の散文を形態素解析した索引で探します(conj=0 のときは効きません) |
pos・cf | 品詞・活用形で絞る(前方一致。例: 動詞・連体形)。選択肢は /api/search/morph が返します |
offset | 何作品目から返すか。1 回に 30 作品まで、1 作品で 20 か所までを返します |
応答: {total, works_total, offset, works: [{work_id, work, category, count, hits: [{id, field, by, pre, key, post}]}], facets}。facets は語彙素の索引で当たったときの、当たった語の語彙素・品詞ごとの数(多い順に 12 まで)です。total は当たった数、works_total は当たった作品の数、count はその作品で当たった数です。hits の id は段落 ID、field は本文か訳か、by は何で当たったか、pre・key・post は当たった所の前・当たった字・後です。
curl 'https://informanellica.com/kumoi-no-fumigura/api/search?q=%E6%9C%88%E5%BD%B1&cat=%E6%97%A5%E8%A8%98'
和歌を探す /api/uta
勅撰集・私家集・歌合と、作品の中の歌から、1 首ずつ返します。
| 引数 | 意味 |
|---|---|
q | 探す言葉 |
mode | part(部分一致。既定)・head(歌の頭から)・no(作品ごとの通し番号。12 や 1-20) |
w・cat | 集・作品の ID、分類で絞る |
au | 作者で絞る |
q2・near | 一緒に出る言葉と、その近さ(字数。0 は同じ欄のどこか) |
yaku=1 | 訳も返す |
fuzzy=0・conj=0・modern=1 | 全文検索と同じ |
offset・limit | 何首目から何首返すか(limit は既定 200、500 まで) |
format=csv | 当たった全首を CSV(BOM 付き UTF-8)で返す(5 万首まで) |
応答: {total, offset, rows: [{work_id, work, cat, no, id, kotobagaki, author, text, kana, field, pos, len, by, url}]}。text は歌、kana は読み(あるとき)、field・pos・len は当たった欄と位置(字数)、url はこのサイトで読むページ(https://informanellica.com/kumoi-no-fumigura/ からの相対)です。
/api/uta/works は、集・作品の一覧(works: [ID, 名前, 分類] の並び)と、全体の首数(poems)を返します。
const r = await fetch('https://informanellica.com/kumoi-no-fumigura/api/uta?' + new URLSearchParams({ q: '春霞', mode: 'part', limit: 20 }));
const { total, rows } = await r.json();
まとめて使うとき
本文と訳をまとめて使うときは、検索 API を何度も呼ぶより、作品ごとのデータ(github.com/kumoi-no-fumigura)を取ってください。和歌は format=csv でも一度に取れます。