SlideShare a Scribd company logo
おでかけスポット検索
のむずかしさ
- Holidayを支える検索技術
Cookpad TechConf 2016
自己紹介
• 内藤 雄介(ないとうゆうすけ)
• おでかけプラン作成・共有

サービス「Holiday」の開発
• サーバサイドの開発を担当
おでかけスポット検索のむずかしさ - Holidayを支える検索技術
いつもの休日のおでかけを
楽しくすることで
人生を豊かにする
Holidayでの検索
Holidayでの検索
! フリーワード
Holidayでの検索
!
どこで だれとx
中目黒 デート
Holidayでの検索
どこで だれとx
いつ
! 中目黒 冬
Holidayでの検索
どこで だれとx
いつ
なにを
! 中目黒 散歩
Holidayでの検索
! どこで
これまでは...
=> 全文検索
全文検索だけでは
うまくいかなかった
「中目黒、中目黒にない」問題
ユーザが考える「中目黒」
• 目黒川沿いのおしゃれなカフェ・雑貨点が

集まっているエリア
• 中目黒駅前の商店街エリア
ユーザが考える「中目黒」
住所としての「中目黒」
2つの「中目黒」の差
「駅周辺を探せない」問題
駅名で検索するということは
• 「駅から『徒歩圏内』で『なるべく近く』

で遊べるところないかな」と考えていそう
• 住所文字列から距離は測れない
=> 結果順に反映できない
課題
• スポット名・住所からの全文検索では...
• 一般認識とは違ったエリアを探してしまう
• 駅からの距離を結果に反映できない
「全文検索」x「地理検索」
Elasticsearch
これまで
中目黒 カフェ! 中目黒 カフェ
改善後
カフェ
中目黒
" { 位置情報 }
! 中目黒 カフェ
AND
or
must
Elasticsearchでの地理検索
• Geo Distance Filter
• Geo Polygon Filter
• Geo Bounding Box Filter
※Elasticsearch2系ではQueryとして実装されてます
Geo Distance Filter
• 中心点からの距離で絞り
込む
• 駅周辺のスポットを探す
などのケースに適してい
る
Geo Polygon Filter
• 多角形で範囲を指定する
• 複雑なエリアの場合に使
用する
Geo Bounding Box Filter
• 地理検索オプションの中
で、最も高速に動作
• 正確さが求められないな
らこれを使うと○
地名を判別するために
• 形態素解析の強化
• mecab-ipadic-NEologd の導入
• 新語・流行語
• 全国駅名一覧
• 同義語管理
地名の判別 - 辞書の強化
{
"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)
地名の判別 - 辞書の強化
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 '奥渋谷'
結果
認識通りのエリアが探せる!
! 中目黒 デート
結果
駅周辺から距離順に探せる!
! 目黒駅 デート
結果
住所じゃなくても探せる!
! 奥渋谷 デート
まとめ
• 「どこで」を探すには全文検索では不十分
• 「地理検索」を組み合わせることで、

よりよい検索体験を作れる
• Elasticsearchは地理検索するにも便利!
ご静聴ありがとうございました
おまけ
「駅名」での検索の場合
• 駅周辺のスポットを検索
• 駅からの距離に応じてスコアを調整
• Elasticsearchでは
• Function Score Query を使う
• 詳しくは http://techlife.cookpad.com/
entry/2015/03/12/080000

More Related Content

Viewers also liked

開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
開発した新技術から、新しい価値を作るためのクックパッド検索チームのプロダクト開発手法
Hiroto Igarashi
 
What matters to technology driven business
What matters to technology driven businessWhat 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/23Cookpad 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 2016R&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に必要なこと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 businessWhat matters to technology driven business
What matters to technology driven business
 
Cookpad Techconf@kimura 2016/01/23
Cookpad Techconf@kimura 2016/01/23Cookpad Techconf@kimura 2016/01/23
Cookpad Techconf@kimura 2016/01/23
 
R&D at Foodtech company - #CookpadTechConf 2016
R&D at Foodtech company - #CookpadTechConf 2016R&D at Foodtech company - #CookpadTechConf 2016
R&D at Foodtech company - #CookpadTechConf 2016
 
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すためにモバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
 
Cookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なことCookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なこと
 

おでかけスポット検索のむずかしさ - Holidayを支える検索技術