Contenu connexe
Similaire à JJUG CCC リクルートの Java に対する取り組み (20)
Plus de Recruit Technologies (20)
JJUG CCC リクルートの Java に対する取り組み
- 2. 2
宮川 典久 リクルートテクノロジーズ APソリューショングループ
自己紹介
Twitter
@m_nori
出身地
東京
趣味
ロードバイク
ゲーム(最近はMH4G)
折り紙
- 3. 3
(C) Recruit Technologies Co.,Ltd. All rights reserved.
アジェンダ
1.はじめに
2.次世代検索基盤について
3.サイト展開へ向けての取り組み
4.まとめ
- 5. 旅行
IT/トレンド
生活/地域情報
グルメ・美容
ライフスタイル領域
ライフイベント領域
進学
就職
結婚
転職
住宅購入
車購入
出産/育児
「選択・意思決定」を支援する情報サービスの提供
→「まだ、ここにない、出会い。」の実現へ
リクルートとは
5
- 6. リクルートキャリア
リクルートジョブズ
リクルートスタッフィング
リクルート住まいカンパニー
リクルートライフスタイル
リクルートマーケティングパートナーズ
スタッフサービス・ホールディングス
リクルートアドミニストレーション
リクルートコミュニケーションズ
事業会社
機能会社
インフラ部門
大規模プロジェクト推進部門
UI設計/SEO部門
ビッグデータ機能部門
テクノロジーR&D部門
事業・社内IT推進部門
リクルート
ホールディングス
リクルートとは、
主要7事業会社+3機能会社
で構成されるグループ企業群
6
リクルートテクノロジーズとは
- 7. リクルートテクノロジーズの役割
7
(C) Recruit Technologies Co.,Ltd. All rights reserved.
開拓
実装、展開
運用
テクノロジー
ライフサイクル
≪テクノロジーへの考え方≫
「開拓」「実装・展開」を経た「運用」でリクルートへの利益貢献を行う。
- 8. リクルートテクノロジーズの役割
8
(C) Recruit Technologies Co.,Ltd. All rights reserved.
広範囲のビジネスに装 着し、効果を最大化さ せるための改善を行い、 事業貢献利益を追究
Rグループのビジネスに 短・中期的に実活用の可能 性がある技術をリサーチ
対象技術における事業化 への検証を行い、評価・選 定する
開拓(実活用研究)
実際に事業へ適用 し、より広範囲に 利用するための型 化やスキームを構 築
実装・展開
運用
実施内容
リクルートテクノロジーズ(短・中期的視野)
利益を目的としない中長期的な 視点に立ち、新技術や新手法の 研究/発明を行い、論文発表す ることを目指す
要素基礎技術の研究
社外(中・長期的視野)
技術数の
推移イメージ
年間約200の技術をリサーチし、 約30の技術を評価・選定
年間数個〜10個の
技術を展開
運用フェーズまで
移行された技術が蓄積
無数の新技術を研究/発明
- 9. •サイト横断でのアーキテクト領域を担当し、 サイトに役立つソリューションを展開する グループ
•社内フレームワークや性能チューニング等 をソリューション化し運用している。
•運用だけでなく、技術ベースでサイトに貢 献するため、ソリューションの開拓や実 装・展開も担う
ASGとATL
9
(C) Recruit Technologies Co.,Ltd. All rights reserved.
•新しい技術の開拓や次のトレンドを察知し、 未来のサービスに活かせるソリューション を生み出すグループ
•先端技術をベースとしたソリューションを 作り、サイト内でフィジビリティを行う。
どちらもリクルートテクノロジーズ内でアプリケーションの開発を担当する組織
- 10. ASGとATL
10
(C) Recruit Technologies Co.,Ltd. All rights reserved.
技術数の 推移イメージ
ATL
ASG
開拓(実活用研究)
実装・展開
運用
テーマによっては最初か ら協同する
- 11. リクルートにおけるJavaへの取り組み
11
(C) Recruit Technologies Co.,Ltd. All rights reserved.
多くのサイトでR2FrameworkというJava製の社内フレームワークを使っているた め、リクルートはJava非常にお世話になっています!
✖
- 13. 次世代検索基盤とは
13
(C) Recruit Technologies Co.,Ltd. All rights reserved.
Query Analyze Search System
リクルート内のサイトに対して
•検索品質
•フィードバック
•検索機能追加
•メトリクス など提供する次世代検索基盤
- 14. アーキテクチャ
14
(C) Recruit Technologies Co.,Ltd. All rights reserved.
✖
殆どの機能をelasticsearchのプラグインとして実装
- 15. elasticsearchとは
15
(C) Recruit Technologies Co.,Ltd. All rights reserved.
オープンソースの全文検索エンジン 【特徴】
•Apache Luceneがベース
•リアルタイム性
•スキーマレス
•分散環境
•RESTful API
•楽観的バージョン制御 最近はKibanaと組み合わせたログモニタリングによく使われている。
elasticsearch自体については18時からの@johtaniの セッションで詳細に話してくれると思います
- 16. 体制と役割
16
(C) Recruit Technologies Co.,Ltd. All rights reserved.
Qass
サイト提供I/F
検索基本機能
機械学習
インフラ
Qass利用サイト
Hadoop開発
インフラ構築
elasticsearch プラグイン開発
導入支援
タスク
組織
ASG
ATL
BDG
ISG
- 17. 提供する機能
17
(C) Recruit Technologies Co.,Ltd. All rights reserved.
Qass
サイト提供I/F
検索基本機能
機械学習
インフラ
•Suggest
•Results Blending
•Query A/B Test
•Custom Tokenizer
•Query Boosting
•Speller
機能
•User Feed Back
•Dictionary
- 18. ユーザーフィードバック
18
(C) Recruit Technologies Co.,Ltd. All rights reserved.
ビーコンサーバ
Hadoop基盤
- 19. Hadoopによる機械学習の活用
19
(C) Recruit Technologies Co.,Ltd. All rights reserved.
機械学習辞書
ビーコンデータ
・入力中のキーイベントを収集
「牛角」の読みが「ぎゅうかく」で あることを学習!
牛角
翌日「ぎゅうかく」で検索してみると・・・
※入力途中で「牛角」を入力候補に表示!
検索
※「牛角」に漢字変換してから検索
特殊な読み仮名は通常手動で辞書登録しないと仮名検索ができない 例)「ぎゅうかく」と入力
検索ログ
- 21. Suggest+Beacon サーバ
各サイト
Qassのシステム構成
21
(C) Recruit Technologies Co.,Ltd. All rights reserved.
APサーバ
Batchサーバ
QassPlugin
Qass Analizer
コンテンツ インデックス
シノニム
機械学習辞書
マッピング
HDFS
収集データ
クエリーログ
ビーコンログ
コンテンツ データ
運用管理
Batchサーバ
Qass Analizer
サジェスト
インデックス
集計結果
シノニム
機械学習辞書
マッピング
サジェスト データ
- 22. Suggest+Beacon サーバ
各サイト
通常の検索
22
(C) Recruit Technologies Co.,Ltd. All rights reserved.
APサーバ
Batchサーバ
QassPlugin
Qass Analizer
コンテンツ インデックス
シノニム
機械学習辞書
マッピング
HDFS
収集データ
クエリーログ
ビーコンログ
コンテンツ データ
運用管理
Batchサーバ
Qass Analizer
サジェスト インデックス
ユーザ操作は全て Beaconサーバに送信
- 23. Suggest+Beacon
サーバ
各サイト
サジェスト
23
(C) Recruit Technologies Co.,Ltd. All rights reserved.
APサーバ
Batchサーバ
QassPlugin
Qass Analizer
コンテンツ インデックス
シノニム
機械学習辞書
マッピング
HDFS
収集データ
クエリーログ
ビーコンログ
コンテンツ データ
運用管理
Batchサーバ
Qass Analizer
サジェスト
インデックス
- 24. Suggest+Beacon サーバ
各サイト
サジェスト
24
(C) Recruit Technologies Co.,Ltd. All rights reserved.
APサーバ
Batchサーバ
QassPlugin
Qass Analizer
コンテンツ インデックス
シノニム
機械学習辞書
マッピング
HDFS
収集データ
クエリーログ
ビーコンログ
コンテンツ データ
運用管理
Batchサーバ
Qass Analizer
サジェスト
インデックス
- 25. Suggest+Beacon
サーバ
各サイト
機械学習
25
(C) Recruit Technologies Co.,Ltd. All rights reserved.
APサーバ
Batchサーバ
QassPlugin
Qass Analizer
コンテンツ
インデックス
シノニム
機械学習辞書
マッピング
HDFS
収集データ
集計結果
シノニム
機械学習辞書
マッピング
Map/Reduce
サジェスト データ
クエリーログ
ビーコンログ
コンテンツ
データ
運用管理
Batchサーバ
Qass Analizer
サジェスト インデックス
- 26. 更新面の管理
26
(C) Recruit Technologies Co.,Ltd. All rights reserved.
プラットフォームとして提供しているため、サイトによってインデックス更新の方 針やタイミングが異なるのを実現できるようにする必要がある。
サイトA
日時で差分更新のみ
サイトB
日次の差分更新
+
月次で全件更新→翌日反映
サイトC 週次で全件更新→月曜朝8時に反映
- 27. 更新面の管理
27
(C) Recruit Technologies Co.,Ltd. All rights reserved.
QassPlugin
ItemIndex001
SearchIndex(Alias)
検索
更新
UpdateIndex(Alias)
インデックスを直接参照するのではなくelasticsearchのAlias機能を活用すること で、検索面と更新面を間接的に参照。
ItemIndex002
- 28. 更新面の管理
28
(C) Recruit Technologies Co.,Ltd. All rights reserved.
QassPlugin
ItemIndex001
SearchIndex(Alias)
検索
更新
UpdateIndex(Alias)
検索面を表に出すタイミングでAliasの切り替えを実施。 インデックス毎に連番でバージョン番号を付けて管理を行う。
ItemIndex002
ItemIndex003
一定期間経過後に削除
- 29. 辞書更新への対応
29
(C) Recruit Technologies Co.,Ltd. All rights reserved.
シノニム
機械学習辞書
マッピング
Qass Analizer
途中から異なる辞書を使うと不整合が発生するため、辞書を反映させるのはインデ ックスを作り直したタイミングにする必要がある。
焼肉→焼き肉
◯◯焼き肉
△△焼肉
◯◯焼き肉
△△焼き肉
シノニム
機械学習辞書
マッピング
Qass Analizer
焼き肉→焼肉
◯◯焼き肉
△△焼き肉
辞書を更 新
□□焼き肉
□□焼肉
- 30. 辞書更新への対応
30
(C) Recruit Technologies Co.,Ltd. All rights reserved.
ItemIndex001
ItemIndex002
ItemIndex003
シノニム
機械学習辞書
マッピング
シノニム
機械学習辞書
マッピング
シノニム
機械学習辞書
マッピング
Dictionary001
Dictionary002
Dictionary003
Qass Analizer
QassPlugin
SearchIndex(Alias)
UpdateIndex(Alias)
検索
更新
Indexバージョンごとに辞書セットを作成。 各インデックスを使う際にどの辞書を使うかをプラグインにて管理。
- 31. Solrからの移行
31
(C) Recruit Technologies Co.,Ltd. All rights reserved.
サイト側アプリケーションサーバ
検索 (http)
検索 (http)
Solr
検索式
Solr 検索式
現状多くのサイトで全文検索エンジンとしてSolrを利用している。 そのため、プラグイン内でSolrクエリーを解釈することでサイト側は手を入れずに 導入を行えるように対応。
SolrとのA/Bテストにも活用!
- 33. Java8への対応
33
(C) Recruit Technologies Co.,Ltd. All rights reserved.
社内フレームワークのJava8化も行い、各サイトのJava8化に向けて推進していま す! ASGでもATLとも連携し、ライブラリのOSS化も積極的に行っていく予定です!