(1/3)リクルートの事例を基に、大規模BtoCサービスに求められる検索基盤はどう構築されるものなのか、どんな技術が採用されているのか、運用はどうなっているのかなどについて解説する連載。今回は、ログデータの分析および可視化の基盤を構成する5つの主なOSSや集計データを活用したキーワードサジェストの事例を紹介します。Drillの活用に向けて次回は、DevOpsの取り組みについて連載目次リクルートの全社検索基盤「Qass」の事例を基に、大規模BtoCサービスに求められる検索基盤はどう構築されるものなのか、どんな技術が採用されているのか、運用はどうなっているのかなどについて解説する本連載。検索システムを構築する際に、最も重要なのは、前回の「ElasticsearchとKuromojiを使った形態素解析とN-Gramによる検索の適合率と再現率の向上」でも紹介した、検索品質の向上です。Qassでは、いろいろなログを組み合わせて分析したり、ランキングデータに活用したりと、ログデータはシステムの中核となっています。第3回の今回はQassの検索基盤を支えるデータ集計基盤と、それによるデータ可視化、集計したデータを生かす事例などを紹介します。現在、これまでQassで利用していた可視化基盤の中核を新しいミドルウエアに切り替えようと考えているので、最後に紹介します。ログデータの分析および可視化の基盤を構成する5つの主なOSSQassでは、現在以下のOSS(オープンソースソフトウエア)を活用して、ログデータの分析および可視化を行っています。全体の構成カスタマーが検索したキーワード、滞在時間、「どんな検索結果が表示されたか」「検索順位の何番目を選択したか」などのデータをログから回収します。回収したデータは、データ集計基盤で集計し、Kibanaを利用して可視化されます。集計されたデータは可視化するだけではなく、検索機能をサポートするサジェスト(後述)、誤字などを補正するスペラー、入力したワードに関連度が高いキーワードを表示させる関連検索や、辞書生成に活用されます。1系のシステムで運用されています。Hiveなどを利用すると、細かい処理が柔軟にできないことがあります。言語は、主にPythonやRuby、PHPを利用しています。KibanaKibanaは、バックエンドにElasticsearchを利用した可視化ソフトウエアです。Qassでは定期的(1時間〜1日)に集めたデータを格納し、データを可視化しています。EmbulkKibana/Elasticsearchに格納するデータの入力元は、アクセスログやtsv、csv、jsonといった、さまざまなデータソースです。S3に出力して、その後Kibana/Elasticsearchに出力する。これらの一連のパイプラインにEmbulkを利用しています。Embulkは、まだ登場して間もないOSSですが、Qassでは、サービスへの影響が少ないため、検証目的および、「ナレッジを蓄えておく」という観点から導入しています。インフラ構築・運用をメインで行う部隊でも、比較的使うことが容易なことも導入の一因です。NginxNginxは、カスタマーログを格納するために利用しています。Webアプリケーションサーバーとしての機能はありませんが、カスタマーのアクションごとにアクセスがあるので、それなりのトラフィックがあります。fluentdNginxで出力したカスタマーログを定期的に回収します。System)上に格納され、分析データの一つとして活用しています。Kibanaでどのようなデータを可視化しているのか?データを視覚的にモニタリングすることは、非常に重要です。可視化することで、サイトの属性や「どのようなキーワードが入力されているのか」がひと目で分かるようになります。導入しているサイトによって違いますが、主に以下のデータを可視化して分析を行っています。キーワードランキング「どのようなキーワードが入力されているか」「日々入力されているキーワードに変わったものがないか」を確認しています。「新しいキーワード、急上昇したキーワードに対して、検索品質に問題がなかったか」「ゼロマッチしたキーワードに対して、なぜ検索結果が表示されなかったのか」「ドキュメント自体が存在しないのか」などを調査したり、調査結果を辞書に反映したりすることで、検索品質を改善していきます。ページビュー/ユニークユーザーページビューやユニークユーザーは、「サイトにどれだけの訪問があったのか」の目安になります。「キャンペーンなどの施策を行ったことで何回ぐらいのアクションが生まれたのか」が分かります。サイトの訪問ピーク時期が可視化されることで「いつサイトへのアクション誘導施策を行えばいいのか」が分かりやすくなります。「カスタマーがサジェストの何番目を選択したのか」「検索結果の何番目がよく押されているのか」など確認します。Kibanaによるキーワードサジェストの利用率と「どのポジションが選択されているか」の可視化A/BテストA/Bテストの指標を可視化することは、非常に重要です。検索のランキングパラメーターを変更することで、「既存の検索結果と比較して、どのくらい効果が出たのか」「QPS(1秒に処理できるリクエスト数)などに影響はないか」など、いろいろな視点から分析を行います。有意差が出たところで、本番の環境にリリースします。検索ランキングのチューニングは、トライ&エラーです。微妙なパラメーターの変更でアクション数に大きな影響が出るので、A/Bテストを行うことで、既存のランキングと新しいランキングで有意差があることを証明することが重要です。越えられない壁がある理由と打開策を整理するブームだったHadoop。実際にはアーリーアダプター以外には、扱いにくくて普及が進まないのが現状だ。その課題に幾つかの解決策が出てきた。転換期を迎えるHadoopをめぐる状況を整理しよう。聞けないHadoopとテキストマイニング入門Hadoopとは何かを解説し、実際にHadoopを使って大規模データを対象にしたテキストマイニングを行います。全文検索エンジン「Lucene.Net」を使うサイト構築などで使用できる検索エンジンをVBで活用。日本語アナライザを用いたインデックス作成から検索アプリ作成まで。クックパッド、グリー、ぐるなび、CROOZは検索技術をどう使っているのか:検索技術を使うなら知ってないと損する6つのことソーシャルアプリなど大規模Webサービスや企業内システムでも欠かせない検索技術のまとめNamazuによる全文検索システムの導入サーバに集積した情報を再利用するには全文検索システムが必要だ。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。