自社サイトの検索機能を構築して、顧客理解をより深める取り組み

公開日:2020-10-05

こんにちは、サービスグループ gusukuユニット デベロップメントチーム、そしてサポートチームのメンバーでもある西島です(年初に組織改編があってから名刺を誰にも渡す機会が1回もなかったので、突然ですが所属を名乗ってみました)。

2020年8月末の話ですが、弊社の提供している gusuku Customine のサポート・ドキュメントサイト向けの検索システムを AWS の Amazon Elasticsearch Service を中心としたサーバレスの検索システムにリプレースしました。

今回はわざわざ自前でこのシステムを構築した目的と、それによる効果を皆さんに共有したいと思います。

システム概要

今回構築したシステムはこのような構成になります。

サーバレス検索システム概要
  • 検索エンジンは Amazon Elasticsearch Service
  • 検索APIは Amazon API Gateway + AWS Lambda
  • ElasticsearchのインデックスをメンテナンスするLambda関数
  • サイトをクローリングするロボット(これもLambda関数です)
  • 類義語を管理するkintoneアプリ
  • ユーザーがブラウザで利用する検索ウィジェット

一見構成要素が多く複雑に見えますが、運用負荷も低く、使い勝手もなかなか良いシステムとなっています。

APIも含め Lambda関数群は全て AWS SAM を利用して構築、デプロイされています。全てを1発でデプロイ出来るので、とても楽ですね。プログラミング言語としては Go言語(Golang) を利用しています。
検索ウィジェットは、最近お気に入りの Svelte を利用してJavaScriptで書かれています(利用のオススメはしませんがIE11でも動作します!)。

構築の背景と目的

この検索システムを構築する以前は、Googleカスタム検索エンジンや検索SaaSで有名な algolia を利用していました(一部まだ移行していないサービスも残っています)。

一般的によく見かけるのは「Googleカスタム検索エンジン」だと思います。
簡単に設置できて良いサービスなのですが、以下のようなデメリットがあります。

  • 広告が出る
  • 検索内容の細かい分析が出来ない
  • 検索するページを細かく指定できない

広告が出てしまうのは、無料サービスなので当然なのですが(タダより高いものは…と言うやつです)、本来これを許容できるサイトはなかなか少ないと思います。

弊社が最も困っていたのは、検索内容の細かい分析が出来ないことです。

弊社のサイトは情報量が多く、一般的なディレクトリ構造で目的の情報を探そうとしても、なかなか難しい面があります。なので結局検索に頼ることになるのですが、この部分に既製品を使っていると、どうしても細かい要求に答えることが出来ません。

その要求とは…?

技術的には色々あるのですが、最も大事なことは、お客様の考えてることをよく理解したい、ということに集約されます。

目的 : お客様のことをもっと理解したい!

弊社の gusuku Customine は機能を一言で言うと「ノーコードで kintone カスタマイズが可能になる」、というシンプルなものですが、真の目的はお客様が kintone で実現しようとする業務改善を手助けすることにあります。

このお客様の業務改善を成功させる = カスタマーサクセスを実現させるにあたって、サービスを提供するチーム全体としてお客様のことをよく理解していく必要があります。そのためにお客様との様々な接点で、色々な努力を重ねています。力を入れているチャットサポートもそうですし、この検索機能もその1つ、というわけです。

自前でこの検索機能を構築することで、細かいカスタマイズが可能になり、よりビジネス寄りの要望にも答えることが出来るようになりました。

kintoneアプリで管理する類義語

例えば、「類義語」という考え方を導入したのもその1つです。

類義語とは、例えば「テーブル」「サブテーブル」と、どちらの検索キーワードを入力しても、kintoneのテーブルについての結果がヒットするイメージです。

このシステムでは、類義語はkintoneアプリとして誰でも登録可能な状態になっていて、例えばこのように、「地図」「マップ」「map」というような類義語群が、様々登録されています。

類義語登録

弊社のドキュメント上では、極力公式の用語(例えば kintone の用語であれば、kintone ヘルプkintone API のドキュメントで利用されている用語)で記載されています。

ただ、お客様が実際検索する際に利用するキーワードは、このような公式のキーワードばかりとは限りません。例えば先程例で上げた「サブテーブル」というキーワードは、公式の単語ではないので弊社のドキュメントやkintoneヘルプでは登場しません。ですが、kintone APIが掲載されているcybozu developer network上では、比較的見られるキーワードになります(テーブル形式のフィールドタイプが“SUBTABLE”となっているところから、来ているのではないかと推測されます)。

このような時に「類義語」を登録しておくことで、お客様が望んでいる検索結果を返すことが出来るようになります。

ここでは類義語という一例を上げましたが、このように検索に利用されているキーワードをよく分析することで、そのキーワードの裏にあるお客様の意図に気づくことが出来ます。

自分たちが気づかなかった検索キーワードを、お客様に毎回教えてもらってる」ようなイメージです。

まとめ

類義語の他にも、お客様の業務改善成功を助けるべく、様々な施策をこれからも実施していきます!

ご要望などございましたら、お気軽にチャットサポートまでお声がけ頂ければと思います。

投稿者プロフィール

アバター画像
西島
"沖縄の自宅からリモートワークで参画している根っからのクラウド・コミュニティ大好き人間。
オープンソースとクラフトビールをこよなく愛する。"