Slide 1

Slide 1 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 1 若手バックエンドエンジニアが Elasticsearch を使ってみた話 2025 February 26th 
 株式会社AbemaTV 堀田 朋宏 Elasticsearch Community in Tokyo 2025 


Slide 2

Slide 2 text

AbemaTV, Inc. All Rights Reserved
 堀田 朋宏 ● 2023年、株式会社AbemaTVに 
 バックエンドエンジニアとして新卒入社 
 ● 業務
 ○ 課金関連機能のバックエンド開発 
 ○ 検索機能のバックエンド開発 
 ● 技術
 ○ Go, Kubernetes, Elasticsearch 
 ● X:@hott0mott0
 2 Profile Tomohiro Hotta

Slide 3

Slide 3 text

AbemaTV, Inc. All Rights Reserved
 3 1. ABEMA の検索について a. 検索機能の概要 b. 検索における ABEMA 特有の課題 2. Elasticsearch との出会い 3. 取り組んだ改善事例 4. 検索システムの開発で学んだこと INDEX

Slide 4

Slide 4 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 4

Slide 5

Slide 5 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 5 ABEMA の検索における機能は以下の2種類。 ● 全文検索 ● ワード補完 ● ABEMA で配信しているアニメ、スポーツ、バラエティなど、幅 広いジャンルのコンテンツを検索できる。 ● Elastic Cloud を利用して実現している。 ~検索機能の概要 ~

Slide 6

Slide 6 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 6 ABEMAの検索システムで検索対象となるデータ は多岐に渡る ● シリーズ ● シーズン ● エピソード ● 放送枠 ● ライブ (生配信) ● ペイパービュー etc… ~検索機能の概要 ~

Slide 7

Slide 7 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 7 ● また、作品名だけでなく、以下のような要素も考慮しなければならない ○ 作品の詳細 ○ キャストの名前 ○ 無料コンテンツか有料コンテンツか ○ 現在放送中か ○ 作品のジャンル etc… ~検索機能の概要 ~

Slide 8

Slide 8 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 8 ● ABEMA は 他の OTT サービスと違い、「テレビ」としての側面を 持つ。 ● ABEMA で放送されている「ABEMA NEWS」というものがある。 ● ニュースのデータ構造は、「ニュース」というシリーズに、一つ一つのニュー スがエピソードとして紐づく。 ~検索における ABEMA 特有の課題 ~ ニュースのスコアが高くなる問題

Slide 9

Slide 9 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 9 ● シリーズを検索する際の対象となる Index には、 シリーズ配下の全てのエピソードの情報も含まれ ている。 ● 一般的にアニメ等は 1 シリーズに対して 12~24 エピソードくらいになり、 バラエティでも何百という単位。 ● ニュース系のシリーズだけエピソード数が 1 万を超えてくる。 ~検索における ABEMA 特有の課題 ~

Slide 10

Slide 10 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 10 1. 紐づくエピソードの数が多いシリーズのスコアがそもそも高くなりやすい。 ○ 膨大なエピソードの中の1件のタイトルにヒットした場合 ○ IDF値が他のシリーズより大きく上回ってしまう。 2. ニュースは様々な話題を取り扱うため、まったく関係ないと思われるワードで も、どれかのエピソードのタイトルにヒットしてしまう可能性がある。 ○ 1 の状況に陥りやすい。 ~検索における ABEMA 特有の課題 ~

Slide 11

Slide 11 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 11 ● 例えば、アイドルや芸能人の名前でシリーズを検索して、その人が出演して いる作品を探そうとすると、、、 ● ニュースのスコアが高くなり、上位表示されてしまう可能性がある ● そのためシリーズ検索においては、ニュースはスコアが下がるようにして、出 演している作品のシリーズが上位に出るように調整しなければならない ~検索における ABEMA 特有の課題 ~

Slide 12

Slide 12 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 12 ● ABEMAではコンテンツ種別ごとに Index を分けている。 ● そして、ES のスコアは Index ごとの データ数にも依存する。 ● そのため、Index 単位では意図した 検索結果になっても、一つの検索処理で 複数の Index にクエリを実行し、 その結果を組み合わせたりすると、 検索結果が意図しない順番になる可能性があ る。 ~検索における ABEMA 特有の課題 ~ シリーズ・シーズン検索の問題

Slide 13

Slide 13 text

AbemaTV, Inc. All Rights Reserved
 ABEMA の検索について 13 ● ABEMAではシリーズ・シーズンをまとめて検索している。 ● シリーズの方が総データ件数が圧倒的に多いため、シーズンよりもシリーズ のスコアの方が高く出てしまう。 ○ これも IDF値の差異により発生。 ● 例えば、「今日好き」は本編をシーズン単位でインデクシングしているため、 シーズンを上位に出したい。 ● しかし、番外編のシリーズが上位にきてしまうということも起こりうる。 ~検索における ABEMA 特有の課題 ~

Slide 14

Slide 14 text

AbemaTV, Inc. All Rights Reserved
 Elasticsearch との出会い 14

Slide 15

Slide 15 text

AbemaTV, Inc. All Rights Reserved
 Elasticsearch との出会い 15 ● 検索機能がどのように作られているのか漠 然とした興味があった。 ● ちょうどチーム異動があり、 検索機能も担当するチームに異動した。 ● 「いい機会だし、検索やってみたい」 次のタスク何やりたい?> <検索やってみたいです! おk!>

Slide 16

Slide 16 text

AbemaTV, Inc. All Rights Reserved
 Elasticsearch との出会い 16 ● 検索機能の実装を追ってみる。 ● Elasticsearch へのリクエストを送っている箇所を発見。 ● ここから Elasticsearch との付き合いが始まった。

Slide 17

Slide 17 text

AbemaTV, Inc. All Rights Reserved
 取り組んだ改善事例 17

Slide 18

Slide 18 text

AbemaTV, Inc. All Rights Reserved
 取り組んだ改善事例 18 ● 「ABEMA 的ニュースショー」という番組があり、これに対して「あべま的」というよ うなワードで検索するとヒットしない ○ それどころか「ABEMA」という文字が入っている番組がほとんどヒットしない ● 「孤独のぐるめ」と入力しても「孤独のグルメ」がヒットしない 課題

Slide 19

Slide 19 text

AbemaTV, Inc. All Rights Reserved
 取り組んだ改善事例 19 ● このような読み仮名の検索ワードに対しては、コンテンツ名の読み仮名もインデク シングに含めることでヒットさせていた。 ○ 上記の入稿は人の手で行っている。 ● 「ABEMA 的ニュースショー」のABEMAの部分は入稿された読み仮名もアルファ ベットだった。 ○ 検索ワードがひらがななのでそもそもヒットしない。

Slide 20

Slide 20 text

AbemaTV, Inc. All Rights Reserved
 取り組んだ改善事例 20 ● ES の Token Filter に kuromoji_readingform という Filter がある。 ○ これを用いることで、Tokenize したコンテンツ名や検索ワードを 読み仮名に変換することができる。 ○ use_romaji フィールドを True にすることで、読み仮名をローマ字に変換す ることができる。 ● これを以下のフィールドに適用した。 ○ コンテンツのタイトル ○ コンテンツのタイトルの読み仮名 アプローチ

Slide 21

Slide 21 text

AbemaTV, Inc. All Rights Reserved
 取り組んだ改善事例 21 ● 「あべま的」という検索ワードを入力すると、それが「a be ma teki」と変換され、 「ABEMA 的ニュースショー」がヒットするようになった。 ○ ABEMA の部分にヒットするようになった。 ● 「孤独のぐるめ」と入力すると「孤独のグルメ」がヒットするように なった。 ● 「shikujiri」と入力すると「しくじり先生」がヒットするようになった。 ○ ローマ字表記もある程度カバーできるようになった。 結果

Slide 22

Slide 22 text

AbemaTV, Inc. All Rights Reserved
 検索システムの開発で学んだこと 22

Slide 23

Slide 23 text

AbemaTV, Inc. All Rights Reserved
 検索システムの開発で学んだこと 23 ● Elasticsearch の Index はデータベースと似ている。 ○ NoSQL と近い ● バックエンドエンジニアからすると、ES のクエリの書き方に慣れるのに苦労 した。 ○ スキーマが決まっているというより、JSON で AND や OR などの条件 を表して検索条件を組み立てるところ ● 「ABEMA」など、サービス特有のコンテキストが入った文字列を検索対象に すると、ヒットさせるのが難しい ● あるコンテンツがヒットしないという課題を解決する際、他のコンテンツがヒッ トしなくなるといったことが起こらないよう気を配る必要がある。

Slide 24

Slide 24 text

AbemaTV, Inc. All Rights Reserved
 ご清聴ありがとうございました 24

Slide 25

Slide 25 text

AbemaTV, Inc. All Rights Reserved