[アプリ]mediLinkの「検索力」を強くする(1)
編集部のKです。こんにちは。
電子版「イヤーノート」や「病気がみえる」などが読めるリーダーアプリ「mediLink」をご存知でしょうか。
このmediLinkアプリの“検索機能”にフォーカスして、どのように検索機能の改修を進めているのか、2回に分けてお届けします。
■アプリ3.1.0で検索エンジンを導入
これまでのmediLinkは、「イヤーノート」「レビューブック」「病気がみえる」とコンテンツを増やすことに専念してきましたが、「病気がみえる」全巻のアプリ化が完了し、よりアプリを便利に使うための機能強化に力を注ぐことができるようになりました。
その1つが検索機能の強化です。
mediLinkアプリでは2019年7月にリリースしたver.3.1.0から、新たに検索エンジンを実装し、次のような検索を行えるようになりました。
・全文検索の実現
・ゆらぎ検索の強化(同義語辞書)
・サジェスト機能
・未購入・未DLコンテンツも含めて検索結果に表示
実際に使われた方は、これまでと変わったことにもう気づかれたかと思います。
いったい検索エンジンで何が変わったの?、という話の前に、これまでの検索機能はどのような仕組みだったのかを振り返ってみます。
■思うように検索がヒットしなかった旧バージョン
ver.3.1.0以前の旧バージョンでは、お使いのユーザーの皆様から、
「検索してもヒットしてほしいキーワードがヒットしない」
「検索ワードを正確に入力しないとヒットしてくれない」
など、お叱りの声をよくいただいていました。
そもそも検索エンジン導入前の検索は、書籍の索引に掲載された語句とページのみを収録した「索引検索」でした。
例えば「病気がみえる vol.7 脳・神経」では、
「Guillain-Barre症候群(GBS)」
「ギラン・バレー症候群」
「GBS(Guillain-Barre症候群)」
が索引に収録されており、これらで検索すると、索引にある239、240、302、306、319ページを検索結果として表示します。
これが「索引検索」です。
索引には疾患名、薬剤名、術式名などはありますが、「アジア人」「男性」などの細かい語句までは登録されていません。
全文検索にはほど遠い水準でした。
また、いわゆる「ゆらぎ検索」に対応するため、索引検索でも同義語の組合せ情報を簡易的に持たせてはいました。
しかし、索引検索用のデータが「イヤーノート」や「病気がみえる」などのコンテンツごとに作成されていたため、ある疾患名の定義が変わって新しい疾患名を登録したいとき、これまでリリースした過去のコンテンツに対しても個別にデータを修正して、配信し直さなければなりませんでした。
索引検索はオフラインでも検索可能なことがメリットではあるのですが、コンテンツごとに検索用のデータを持っていることで、管理上の手間がかかることが問題点でした。
また、アプリ内のコンテンツが増えれば増えるほど、検索が重くなることも問題でした。
■検索エンジン導入1:全文検索が可能に
こうした状況を打開して「全文検索ができるようにすること」と「同義語の登録をコンテンツ間で共有すること」を実現するため、検索エンジンを導入することになりました。
これまでにも「全文検索を実装するのはそんなに難しいことなの?」という問合せをいただいたことがありますが、全文検索は全テキストを検索用のデータに投入しておく必要があるため、「QBオンライン」などのオンラインコンテンツでは比較的容易に実現可能なものの、「イヤーノート」などのダウンロードコンテンツでは取得すべきデータ量が大きくなったり、検索に時間がかかったりすることが懸念されました。
そこで、検索のためのサーバーを立て、mediLinkアプリからの検索のリクエストをオンラインで受けつけ、その結果をmediLinkアプリに返すようにしたのが、今回導入した検索エンジンになります。
例えばこれまでは、アジア人に多い疾患をまとめるために「アジア人」と検索しても、期待された検索結果は表示されませんでした。これは索引に「アジア人」という語句が載っていなかったためです。
検索エンジンが導入された現在では、「アジア人」で検索すると、かなりの件数がヒットするようになりました。ぜひ試していただければと思います。
なお全文検索は端末がオンラインのときにしか使えません。オフラインのときは、従来通り索引検索のみの結果が表示されます。
《今後の課題》
全文検索といっても、テキストを検索対象としているので、画像になっている部分の文字は検索することができません。
「病気がみえる」のようにイラストの多いコンテンツでは、特に画像になっている部分が多く、細かい検索には対応できていない状況です。
画像に含まれる語句も検索されるようにするには、画像の位置情報とテキストを検索エンジンに登録する必要があります。その実現方法も含めて、引き続き検討していきます。
■検索エンジン導入2:ゆらぎ検索の強化(同義語辞書)
ゆらぎ検索とは、検索したい語句をカタカナ(例:ギランバレー)で入力しても、ローマ字表記(例:Guillan-Barre)の箇所も一緒に検索される仕組みです。
ゆらぎ検索を可能にするには、どの語句を同じ意味とするかを定める同義語辞書を作成する必要があります。
検索エンジン導入前も、ある程度のゆらぎ検索には対応していましたが、ゆらぎ検索のための同義語辞書をコンテンツごと(病みえなら各巻ごと)に作成しなければならず、管理が煩雑でした。
新しく発行された巻では引っかかるのに、古い巻では引っかからない同義語がある、という現象も実際に起こっていました。
今回導入した検索エンジンでは、この同義語辞書を統一して検索エンジンに持たせることで、どのコンテンツのどの巻から検索しても、同じ水準で検索結果を返すことが可能になりました。
同義語辞書の一例を見てみましょう。
—
ACS, 急性冠症候群, acute coronary syndrome
AEL, 急性赤白血病, acute erythremia, Di Guglielmo症候群
AEP, 急性好酸球性肺炎,acute eosinophilic pneumonia
AHO, Albright遺伝性骨異栄養症, オルブライト遺伝性骨異栄養症
ALL, 急性リンパ性白血病, リンパ芽球性白血病, acute lymphoblastic leukemia
ASH, 非対称性中隔肥大, 非対称性中隔肥厚, 非対称性心室中隔肥厚
ATD, Alzheimer型認知症, アルツハイマー型認知症
—
こんな感じで、略語、日本語、外国語、別名表記を登録しています。
略語はすべての語句で登録している訳ではなく、例えば「Guillain-Barre症候群(GBS)」は「B群β溶血性レンサ球菌(GBS)」という同じ略語を持つ語句がありますので、この場合「GBS」は同義語に含んでいません。
《今後の課題》
同義語辞書は2019年8月時点で4300件の組合せ、9680語句が登録されています。が、まだまだ道半ばで、「この疾患名とこの疾患名が実は同じ意味だった」というのが拾いきれていません。
みなさんが語句を調べるときに「この語句も引っかかってほしかったのに引っかからない」ということがなくなるように、同義語辞書の追加作業をこれからも続けていきます。
—–
次回はサジェスト機能についてお届けします。お楽しみに。
mediLinkアプリについてのご要望は下記問合せフォームからお寄せください。
https://accounts.medilink-study.com/front/contact/
(編集部 K)