Overview# This is a personal note on building an API server for searching the Koui Genji Monogatari (Collated Tale of Genji) Text DB.
https://genji-api.aws.ldas.jp/
Background# The following page publishes text data of “Koui Genji Monogatari” in TEI/XML compliant format.
https://kouigenjimonogatari.github.io/
I created an API that registers this text data in Elasticsearch and enables searching by section (koma).
Usage# The following URL provides access to the documentation page using OpenAPI and Swagger.
https://genji-api.aws.ldas.jp/
Key Features# Search Term Expansion# For example, the following URL is an example with the search keyword “Yugao” (Evening Faces). The input/output format conforms to JSON:API.
https://genji-api.aws.ldas.jp/search?q=夕顔&page[limit]=20&page[offset]=0&sort=page&filter[expandRepeatMarks]=true&filter[unifyKanjiKana]=true&filter[unifyHistoricalKana]=true&filter[unifyPhoneticChanges]=true&filter[unifyDakuon]=true&filter[vol_str]=04 夕顔
At this time, the following results are returned. Variations are generated from the input keyword “夕顔” (Yugao), and the search is performed based on these.
{ } " " } d m a e " " ] " } " } " " " " " } t t q t , t , f , s l o t a a a u r " " " " " " " " " r " " " " " i " " " " " " o i f o g " } " " e a 夕 ゆ ゆ ゆ ゆ 夕 夕 ゆ ゆ a e u u u u l e u u u u v r m f t g v : : r n 顔 う ふ ふ う か か う ふ n x n n n n t x n n n n o t i s a r o " " " ] y s " か か か か お ほ 顔 顔 s p i i i i e p i i i i l " t e l e l d s b [ { " f , お お ほ ほ " " " " f a f f f f r a f f f f _ : " t " g _ o u u { } ] : o " " " " , , , o n y y y y s n y y y y s : " : a s c m c , r , , , , r d K H P D " d K H P D t " : t t _ _ k " " " m m R a i h a : R a i h a r p 2 7 i r c o e k d 夕 e O e n s o k e n s o k " a 0 0 , o " o t t e o 顔 d p p j t n u { p j t n u : g , , n : u h s y c " Q t e i o e o e i o e o e s n e " " _ , u i a K r t n a K r t n " " " { t r : : c e o t a i i " t a i i " 0 , : _ _ o r n M n c c : M n c c : 4 e d [ " u i s a a a C a a a C { r o 0 n e " r " l h t r " l h t 夕 r c 4 t s : k : K a r k : K a r 顔 o _ " " s a n u s a n u " r c 夕 : : { " t n g e " t n g e _ o 顔 : r a e : r a e , u u " 7 [ u " s u " s p n , t e : " t e : " p t r , : r , : e " u t u t r : e r t e r t _ , u r , u r b 0 e u e u o , , e , e u , , n d " : 0 ,
As a result, occurrences of “ゆふかほ”, “夕かほ”, and “夕顔” appearing in the text can all be searched at once.
For this search keyword expansion, search options can be toggled ON/OFF. For details, please refer to the Swagger UI mentioned above.
The following OR search is sent to Elasticsearch:
{ } " } " " " ] q , s f s u " } i r o { } e b z o r r o " ] " " } e m t " } y o s , m f " " " p " l h { } { } { } { } { } { } { } { } { } i i " } : : : a " : " o , , , , , , , , n l t g o : u " } " } " } " } " } " } " } " } " } i t e " ] 2 0 [ e r { l w w w w w w w w w m e r v 0 , " d { d i " i " i " i " i " i " i " i " i " u r m o " , : e " l o l o l o l o l o l o l o l o l o m " s l 0 r : d r d r d r d r d r d r d r d r d r _ : " _ 4 { " c i c i c i c i c i c i c i c i c i s : s : [ a g a g a g a g a g a g a g a g a g h { t 夕 r i r i r i r i r i r i r i r i r i o { r 顔 " d n d n d n d n d n d n d n d n d n u " " a " a " a " a " a " a " a " a " a " a l : s : l : l : l : l : l : l : l : l : l d c _ _ _ _ _ _ _ _ _ _ [ " { t { t { t { t { t { t { t { t { t m e e e e e e e e e a x x x x x x x x x t t t t t t t t t t c _ _ _ _ _ _ _ _ _ h l l l l l l l l l " i i i i i i i i i : n n n n n n n n n e e e e e e e e e 1 s s s s s s s s s , . . . . . . . . . k k k k k k k k k e e e e e e e e e y y y y y y y y y w w w w w w w w w o o o o o o o o o r r r r r r r r r d d d d d d d d d " " " " " " " " " : : : : : : : : : " " " " " " " " " * * * * * * * * * 夕 ゆ ゆ ゆ ゆ 夕 夕 ゆ ゆ 顔 う ふ ふ う か か う ふ * か か か か お ほ 顔 顔 " お お ほ ほ * * * * * * * * " " " " " " " "
The rules used for conversion can be checked at the following URL:
https://genji-api.aws.ldas.jp/normalization/rules
{ } " } " } d , m a " " } e " " t t a t v l a y t " } " } " } " } a e a " p t r , s , o , d " r s : e r u " } " } " } " } " } t " " " " " " p " " " " e " " " " " : s t " i l h , d , k , k , p a h d k k p t t u u u u s h d k k p i U { : b e i " " " " " " " " " " " a " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " a " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " a " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " h " " " " " " " " " " " " " " " " " " t i a a a h o i n n n n c i a a a h { o p u s s ゐ ゑ を ワ ヰ ヱ ヲ く ぐ ク グ k が ぎ ぐ げ ご ざ じ ず ぜ ぞ だ ぢ づ で ど ば び ぶ べ ぼ ぱ ぴ ぷ ぺ ぽ ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド バ ビ ブ ベ ボ パ ピ プ ペ ポ n 桐 帚 空 夕 若 末 紅 花 葵 賢 花 須 明 澪 蓬 関 絵 松 薄 朝 少 玉 初 胡 螢 蛍 常 篝 野 行 藤 真 梅 藤 若 若 若 柏 横 鈴 夕 御 幻 匂 紅 竹 橋 椎 総 早 宿 東 浮 蜻 手 夢 雲 玉 鬘 夕 顔 紫 紅 朱 藤 惟 源 物 紫 光 桐 更 御 入 大 中 女 宮 君 上 殿 御 姫 若 内 御 里 六 二 三 四 五 七 八 九 十 n き は う ゆ わ す も は あ さ は す あ み よ せ え ま う あ お た は こ ほ と か の み ふ ま う ふ わ わ わ か よ す ゆ み ま に こ た は し あ さ や あ う か て ゆ く た か ゆ か む も す ふ こ げ も む ひ き こ み に だ ち に み き う と お ひ わ だ ご さ ろ に さ し ご し は く じ o ふ む つ は へ を ひ く ぬ フ ム ツ ハ ヘ ヲ ヒ ク ヌ s s k n n o t o i i i i r s k n n o n d " t " t " " " " " " " ゎ ゎ ヮ ヮ u " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " j 壺 木 蝉 顔 紫 摘 葉 宴 " 木 散 磨 石 標 生 屋 合 風 雲 顔 女 鬘 音 蝶 " " 夏 火 分 幸 袴 木 枝 裏 菜 菜 菜 木 笛 虫 霧 法 " 宮 梅 河 姫 本 角 蕨 木 屋 舟 蛉 習 浮 隠 " " " " " 葉 雀 壺 光 氏 語 式 源 壺 衣 息 道 臣 宮 院 " " " " 前 君 君 裏 所 " 条 条 条 条 条 条 条 条 条 a り は つ う か え み な お か な ま か お も き あ つ す さ と ま つ ち た こ か わ ゆ ち き め ち か か か し こ す う の ほ お う け し い け わ と す き け な め も ま つ う お ら み さ ち れ ん の ら か り う や ゅ い ゅ ょ や み え の ま め か い し と く じ ん じ じ ち ち じ ゅ n " " " " " " " " " " " " " " " " " " " t u j a n a n f f f f i t u j a n " a n e : o : : : : : : : " " " " o : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : i " " " " " 花 賀 " : " 里 " " " " " " " " " " " " " : : " " " " " 柱 " 葉 上 下 " " " " " " : " " " " " " " " " " " " 橋 " : : : : : " " " " " " 部 氏 帝 " 所 " " " " : : : : " " " " " : " " " " " " " " " K つ き せ が む つ じ の い き ち " し つ き や わ か く か め か ね よ る な り き き は は か の な な な わ ふ む き り ろ う は か ひ か ま ら り ま ふ ろ ら の か " ら " " さ ち く つ み じ が さ る つ い す う じ う う " " " " え ぎ ぎ り ょ " じ ょ じ ょ ょ じ じ ょ う e : : : : : : : : : : : : : : : : : : : o o i K e l s y y y y p o o i K e : t o s r : : : : n K : : : : : " " : : " : : : : : : : : : : : : : : : : : : " : " " " : : : : : : : : : : : : : : : : : : " : : : : : : : " " " : " : : : : : : : : : : : : : : : : : : a ほ ぎ み お ら む の え " " る : " く ふ " せ せ も お " づ " う " つ ひ " " か し え う じ げ " き え し り " し み い わ め も き ひ き や ね う い う く : " : : き " " ほ つ " た き げ ぼ " ど ど ん ぐ い : : : : " み み " " : ょ う ょ う う ょ ょ う じ t r n K a t R " H D K P t r n K a t e r " { i " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " a : : " : " " : : : : " : " " " " " : : : : " " " " " n " " " " さ は が ん : : さ : し " : " " " " : ら : " : " " : : ま ら " ら ょ " : " " " " : " や " " " と " " " " " " " き れ : " : : " " : り し ん て : こ う " う ん : " " : : う " う " " う う " ょ i " " " " " " " " " " " " " " " " " " { i R a n i u : i a a h i i " a n i " d m : c い え お ワ イ エ オ " " " " : か き く け こ さ し す せ そ た ち つ て と は ひ ふ へ ほ は ひ ふ へ ほ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ハ ヒ フ ヘ ホ ハ ヒ フ ヘ ホ n " " " " " " あ " " " " " " " " " " " " " " ほ ほ " " " " " " " " " " " " ま " " " " " " " " " " " " " た か ゆ か む " " " " " " " " " " " み き う と " " " " " さ " " " " " " " " " j : : : : き な " " と " " : : : : : " : : : " " : は う : : : : : : " : : : " : : : : : : : は " " " " : : : " き じ い ろ " : " " " " " " : : " " : " : : " " : う c う ん っ わ え お い う ん ウ ン ッ ワ エ オ イ ウ ン c u n j c l s k n o o c : n j c 1 " a a " " " " " " " か が カ ガ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " a き は う ゆ わ " " は お さ " す あ み よ せ え ま う あ お た は こ た た と か の み ふ " う " " " わ か よ す ゆ み ほ に こ た は し あ さ や あ う か て " く ま つ う お ら も す ふ こ げ も " " " こ " に だ ち に や み え の お ひ わ だ ご と ろ に さ し ご し は く じ i " " : : " " " 須 " : " " : " " " " : : " " " " : : し : 玉 " 夕 顔 " " " : ぶ " " " " : : : 宮 君 上 殿 " " " 里 : : : : " C " " " " " " " " " " " " " " " " " " a l a i C e { t u j n n a a i C . : l { l , , , , , , , " " " " { , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , " り は つ う か す も な い か は ま か お も き あ つ す さ と ま つ ち る る こ か わ ゆ ち ま め ふ わ わ か し こ す う の ろ お う け し い け わ と す き け な ゆ も " ら " " さ み さ ち れ ん の む ひ き う み ゅ い ゅ ょ " " " " ま め か い し " く じ ん じ じ ち ち じ ゅ " " " " " : : 葵 賢 : 磨 明 " 関 " " " " 少 初 " 蛍 " " 野 行 " : : " 若 " " " " 御 " " " " " " " " " " " " " 鬘 " " " 紅 朱 " " 源 " : : 更 : " " " " " 御 " " 内 御 " " " " " : h , , , , , , , , , , , , , , , , , l e R R h s o o i e " l " " " h 0 i K , , , : つ き せ が む え み の " き な " し つ き や わ か く か め か ね よ " " な り き き は き か ち か か な わ ふ む き り し う は か ひ か ま ら り ま ふ ろ ら め か , " , , き ち く つ み じ が ら か り い や う じ う う , , , , え ぎ ぎ り ょ , じ ょ じ ょ ょ じ じ ょ う : 桐 帚 空 夕 " " " 木 " 石 " 蓬 屋 絵 松 薄 朝 女 " 音 胡 " 常 篝 分 幸 " " 梅 若 菜 柏 横 鈴 夕 法 幻 " 紅 竹 橋 " 総 早 宿 東 浮 蜻 手 : " , " , , 紫 葉 雀 藤 惟 氏 " : 衣 " 大 " " , , , , 前 姫 若 裏 所 , " 二 " 四 五 " " 九 a K s u u a " r n K t : K 濁 : : a . " z a ほ ぎ み お ら つ じ え , " ち , " く ふ " せ せ も お " づ " う , , つ ひ " " か は え の な な " き え し り " " み い わ め も き ひ き や ね う い の く , " " " ほ つ " た さ る つ " す ど ん ぐ い " み み " " ょ う ょ う う ょ ょ う じ 壺 木 蝉 顔 " " 紅 花 , " " , " 澪 生 " 合 風 雲 顔 " 玉 " 蝶 , 夏 火 " " 藤 真 枝 " " 菜 " 木 笛 虫 霧 " " 匂 梅 河 姫 椎 角 蕨 木 屋 舟 蛉 習 雲 , " " " 壺 光 " 物 " " " " 入 臣 中 女 " 君 君 " " 六 条 三 条 条 七 八 条 " n a " l l n : i " a i a 音 n 0 2 a n { " " " " さ む の ん , る , し " , " " " " , ら , " " " , , ま し " う じ げ , " " " " , , や " " " と " " " " " " " う れ , , , " " , り き げ ぼ , ど う " う ん , " " , , う " う " " う う " ょ { " " " " 若 末 葉 宴 , 花 , 標 " , " " " " , 鬘 , " " " , , 袴 木 " 藤 若 下 , " " " " , , 宮 " " " 本 " " " " " " " " 隠 , , , " " , 語 " 光 桐 , 御 道 " 宮 院 , " " , , 条 " 条 " " 条 条 " 十 g n : e e g c : n c { n ・ " " g " 0 t a , , , , き は が " さ " , , , , , " , , , " ら , ら ょ " , , , , " , , , " , , , , , , , き " , , " し ん て こ " , " " , , " , " , , " " , う , , , , 紫 摘 賀 " 散 " , , , , , " , , , " 柱 , 裏 菜 " , , , , " , , , " , , , , , , , 夢 " , , " 紫 源 壺 息 " , " " , , " , " , , " " , 条 e a s s e 2 a a C a 半 漢 仮 e , 2 i " " な " , と , , , " は う , , , は , , き じ い ろ , , , , , , , " " 花 " , 里 , , , " 葉 上 , , , 浮 , , 式 氏 帝 所 , , , , , , , " " R 5 " " R 7 l " " h " 濁 字 名 " 5 o : , " , " , " " し ぶ " " " , " , " , " " 橋 部 " " " : u 0 : : u 0 K 濁 : a : 音 を を : - n , , , , " " , , , , , , , " " , , , l , l a 音 n を 対 対 0 - { , , , , { e 9 9 e n 統 " g " 清 応 応 " 6 r s 6 5 s a 一 漢 e 歴 音 す す 音 - u " , , " " 字 s 史 に る る 韻 2 l : : : ( ・ " 的 統 仮 漢 変 5 e が 仮 : 仮 一 名 字 化 T s 1 1 " → 名 名 " に に を 0 " 1 8 旧 か 統 " 遣 , 変 変 統 7 , , , 字 、 一 発 い 換 換 一 : 体 ず 音 を " " ( 0 統 → ( 変 現 , , 助 8 一 す 玉 化 代 詞 : ) → 統 仮 な 4 ( " た 一 名 ど 2 ゑ , ま 遣 ) . → ) ( い " 6 え " ふ に 0 、 , → 統 8 ゐ う 一 Z → 、 " " い は , ) → " わ , ) "
Summary# While there may be some incomplete aspects, I introduced an example of building a search API server that includes a mechanism for absorbing orthographic variations in the original text.
I hope this serves as a useful reference.