Submit Search
Upload
おでかけスポット検索のむずかしさ - Holidayを支える検索技術
•
26 likes
•
38,992 views
Yusuke Naito
Follow
2016.01.23 Cookpad TechConf 2016 http://techconf.cookpad.com/
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 38
Download now
Download to read offline
Recommended
Holiday のデザインと開発 - ユーザーに価値を届けるためのプロトタイピングから実装まで
Holiday のデザインと開発 - ユーザーに価値を届けるためのプロトタイピングから実装まで
Keisuke Tada
リードデザイナーってどんな人か考えてみた
リードデザイナーってどんな人か考えてみた
辰徳 井上
ナレッジを共有する文化をつくるために
ナレッジを共有する文化をつくるために
Recruit Lifestyle Co., Ltd.
アイデア創発ファシリテータ_プログラム
アイデア創発ファシリテータ_プログラム
Rikie Ishii
知情意で学ぶ匠Method超入門
知情意で学ぶ匠Method超入門
Hagimoto Junzo
好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代
好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代
schoowebcampus
機能追加を行う際に考慮したい3つのポイント
機能追加を行う際に考慮したい3つのポイント
Miwa Kuramitsu
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
Teppei Sato
Recommended
Holiday のデザインと開発 - ユーザーに価値を届けるためのプロトタイピングから実装まで
Holiday のデザインと開発 - ユーザーに価値を届けるためのプロトタイピングから実装まで
Keisuke Tada
リードデザイナーってどんな人か考えてみた
リードデザイナーってどんな人か考えてみた
辰徳 井上
ナレッジを共有する文化をつくるために
ナレッジを共有する文化をつくるために
Recruit Lifestyle Co., Ltd.
アイデア創発ファシリテータ_プログラム
アイデア創発ファシリテータ_プログラム
Rikie Ishii
知情意で学ぶ匠Method超入門
知情意で学ぶ匠Method超入門
Hagimoto Junzo
好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代
好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代
schoowebcampus
機能追加を行う際に考慮したい3つのポイント
機能追加を行う際に考慮したい3つのポイント
Miwa Kuramitsu
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
Teppei Sato
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
Hiroto Igarashi
What matters to technology driven business
What matters to technology driven business
Ohno Shin'ichi
Cookpad Techconf@kimura 2016/01/23
Cookpad Techconf@kimura 2016/01/23
Mari Kimura
R&D at Foodtech company - #CookpadTechConf 2016
R&D at Foodtech company - #CookpadTechConf 2016
Aki Ariga
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
Keisuke Tada
Cookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なこと
Minero Aoki
More Related Content
Viewers also liked
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
Hiroto Igarashi
What matters to technology driven business
What matters to technology driven business
Ohno Shin'ichi
Cookpad Techconf@kimura 2016/01/23
Cookpad Techconf@kimura 2016/01/23
Mari Kimura
R&D at Foodtech company - #CookpadTechConf 2016
R&D at Foodtech company - #CookpadTechConf 2016
Aki Ariga
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
Keisuke Tada
Cookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なこと
Minero Aoki
Viewers also liked
(6)
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
What matters to technology driven business
What matters to technology driven business
Cookpad Techconf@kimura 2016/01/23
Cookpad Techconf@kimura 2016/01/23
R&D at Foodtech company - #CookpadTechConf 2016
R&D at Foodtech company - #CookpadTechConf 2016
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
Cookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なこと
おでかけスポット検索のむずかしさ - Holidayを支える検索技術
1.
おでかけスポット検索 のむずかしさ - Holidayを支える検索技術 Cookpad TechConf
2016
2.
自己紹介 • 内藤 雄介(ないとうゆうすけ) •
おでかけプラン作成・共有 サービス「Holiday」の開発 • サーバサイドの開発を担当
3.
4.
いつもの休日のおでかけを 楽しくすることで 人生を豊かにする
5.
Holidayでの検索
6.
Holidayでの検索 ! フリーワード
7.
Holidayでの検索 ! どこで だれとx 中目黒 デート
8.
Holidayでの検索 どこで だれとx いつ ! 中目黒
冬
9.
Holidayでの検索 どこで だれとx いつ なにを ! 中目黒
散歩
10.
Holidayでの検索 ! どこで
11.
これまでは... => 全文検索
12.
全文検索だけでは うまくいかなかった
13.
「中目黒、中目黒にない」問題
14.
ユーザが考える「中目黒」 • 目黒川沿いのおしゃれなカフェ・雑貨点が 集まっているエリア • 中目黒駅前の商店街エリア
15.
ユーザが考える「中目黒」
16.
住所としての「中目黒」
17.
2つの「中目黒」の差
18.
「駅周辺を探せない」問題
19.
駅名で検索するということは • 「駅から『徒歩圏内』で『なるべく近く』 で遊べるところないかな」と考えていそう • 住所文字列から距離は測れない =>
結果順に反映できない
20.
課題 • スポット名・住所からの全文検索では... • 一般認識とは違ったエリアを探してしまう •
駅からの距離を結果に反映できない
21.
「全文検索」x「地理検索」
22.
Elasticsearch
23.
これまで 中目黒 カフェ! 中目黒
カフェ
24.
改善後 カフェ 中目黒 " { 位置情報
} ! 中目黒 カフェ AND or must
25.
Elasticsearchでの地理検索 • Geo Distance
Filter • Geo Polygon Filter • Geo Bounding Box Filter ※Elasticsearch2系ではQueryとして実装されてます
26.
Geo Distance Filter •
中心点からの距離で絞り 込む • 駅周辺のスポットを探す などのケースに適してい る
27.
Geo Polygon Filter •
多角形で範囲を指定する • 複雑なエリアの場合に使 用する
28.
Geo Bounding Box
Filter • 地理検索オプションの中 で、最も高速に動作 • 正確さが求められないな らこれを使うと○
29.
地名を判別するために • 形態素解析の強化 • mecab-ipadic-NEologd
の導入 • 新語・流行語 • 全国駅名一覧 • 同義語管理
30.
地名の判別 - 辞書の強化 { "tokens"
: [ { "token" : "中", "start_offset" : 0, "end_offset" : 1, "type" : "word", "position" : 1 }, { "token" : "中目黒", "start_offset" : 0, "end_offset" : 3, "type" : "word", "position" : 1 }, { "token" : "目黒", "start_offset" : 1, "end_offset" : 3, "type" : "word", "position" : 2 }, { "token" : "駅", "start_offset" : 3, "end_offset" : 4, "type" : "word", "position" : 3 } ] } { "tokens" : [ { "token" : "中", "start_offset" : 0, "end_offset" : 1, "type" : "word", "position" : 1 }, { "token" : "中目黒駅", "start_offset" : 0, "end_offset" : 4, "type" : "word", "position" : 1 }, { "token" : "目黒駅", "start_offset" : 1, "end_offset" : 4, "type" : "word", "position" : 2 } ] } with NEologd $ curl -XGET 'localhost:9200/index/_analyze' -d '中目黒駅' kuromoji(Default)
31.
地名の判別 - 辞書の強化 kuromoji(Default) { "tokens"
: [ { "token" : "奥", "start_offset" : 0, "end_offset" : 1, "type" : "word", "position" : 1 }, { "token" : "渋谷", "start_offset" : 1, "end_offset" : 3, "type" : "word", "position" : 2 } ] } { "tokens" : [ { "token" : "奥", "start_offset" : 0, "end_offset" : 1, "type" : "word", "position" : 1 }, { "token" : "奥渋谷", "start_offset" : 0, "end_offset" : 3, "type" : "word", "position" : 1 }, { "token" : "渋谷", "start_offset" : 1, "end_offset" : 3, "type" : "word", "position" : 2 } ] } with NEologd $ curl -XGET 'localhost:9200/index/_analyze' -d '奥渋谷'
32.
結果 認識通りのエリアが探せる! ! 中目黒 デート
33.
結果 駅周辺から距離順に探せる! ! 目黒駅 デート
34.
結果 住所じゃなくても探せる! ! 奥渋谷 デート
35.
まとめ • 「どこで」を探すには全文検索では不十分 • 「地理検索」を組み合わせることで、 よりよい検索体験を作れる •
Elasticsearchは地理検索するにも便利!
36.
ご静聴ありがとうございました
37.
おまけ
38.
「駅名」での検索の場合 • 駅周辺のスポットを検索 • 駅からの距離に応じてスコアを調整 •
Elasticsearchでは • Function Score Query を使う • 詳しくは http://techlife.cookpad.com/ entry/2015/03/12/080000
Download now