インデックス 一 Check & Tuneup 1 ヘルスチェック 2 …四 パスワード&キー検索 1 パスワード検索 2 Windows キー検索 3 Office キー検索 一 Check
おでかけスポット検索のむずかしさ - Holidayを支える検索技術
-
Upload
yusuke-naito -
Category
Engineering
-
view
33.825 -
download
4
Transcript of おでかけスポット検索のむずかしさ - Holidayを支える検索技術
![Page 1: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/1.jpg)
おでかけスポット検索 のむずかしさ
- Holidayを支える検索技術
Cookpad TechConf 2016
![Page 2: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/2.jpg)
自己紹介
• 内藤 雄介(ないとうゆうすけ)
• おでかけプラン作成・共有サービス「Holiday」の開発
• サーバサイドの開発を担当
![Page 3: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/3.jpg)
![Page 4: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/4.jpg)
いつもの休日のおでかけを 楽しくすることで 人生を豊かにする
![Page 5: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/5.jpg)
Holidayでの検索
![Page 6: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/6.jpg)
Holidayでの検索
! フリーワード
![Page 7: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/7.jpg)
Holidayでの検索
!
どこで だれとx
中目黒 デート
![Page 8: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/8.jpg)
Holidayでの検索
どこで だれとxいつ
! 中目黒 冬
![Page 9: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/9.jpg)
Holidayでの検索
どこで だれとxいつなにを
! 中目黒 散歩
![Page 10: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/10.jpg)
Holidayでの検索
! どこで
![Page 11: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/11.jpg)
これまでは...
=> 全文検索
![Page 12: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/12.jpg)
全文検索だけでは うまくいかなかった
![Page 13: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/13.jpg)
「中目黒、中目黒にない」問題
![Page 14: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/14.jpg)
ユーザが考える「中目黒」
• 目黒川沿いのおしゃれなカフェ・雑貨点が集まっているエリア
• 中目黒駅前の商店街エリア
![Page 15: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/15.jpg)
ユーザが考える「中目黒」
![Page 16: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/16.jpg)
住所としての「中目黒」
![Page 17: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/17.jpg)
2つの「中目黒」の差
![Page 18: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/18.jpg)
「駅周辺を探せない」問題
![Page 19: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/19.jpg)
駅名で検索するということは
• 「駅から『徒歩圏内』で『なるべく近く』で遊べるところないかな」と考えていそう
• 住所文字列から距離は測れない
=> 結果順に反映できない
![Page 20: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/20.jpg)
課題
• スポット名・住所からの全文検索では...
• 一般認識とは違ったエリアを探してしまう
• 駅からの距離を結果に反映できない
![Page 21: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/21.jpg)
「全文検索」x「地理検索」
![Page 22: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/22.jpg)
Elasticsearch
![Page 23: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/23.jpg)
これまで
“中目黒 カフェ”! 中目黒 カフェ
![Page 24: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/24.jpg)
改善後
“カフェ”
“中目黒”
" { 位置情報 }
! 中目黒 カフェ
AND
or
must
![Page 25: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/25.jpg)
Elasticsearchでの地理検索
• Geo Distance Filter
• Geo Polygon Filter
• Geo Bounding Box Filter
※Elasticsearch2系ではQueryとして実装されてます
![Page 26: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/26.jpg)
Geo Distance Filter
• 中心点からの距離で絞り込む
• 駅周辺のスポットを探すなどのケースに適している
![Page 27: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/27.jpg)
Geo Polygon Filter
• 多角形で範囲を指定する
• 複雑なエリアの場合に使用する
![Page 28: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/28.jpg)
Geo Bounding Box Filter
• 地理検索オプションの中で、最も高速に動作
• 正確さが求められないならこれを使うと○
![Page 29: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/29.jpg)
地名を判別するために
• 形態素解析の強化
• mecab-ipadic-NEologd の導入
• 新語・流行語
• 全国駅名一覧
• 同義語管理
![Page 30: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/30.jpg)
地名の判別 - 辞書の強化
{ "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)
![Page 31: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/31.jpg)
地名の判別 - 辞書の強化
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 '奥渋谷'
![Page 32: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/32.jpg)
結果
認識通りのエリアが探せる!
! 中目黒 デート
![Page 33: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/33.jpg)
結果
駅周辺から距離順に探せる!
! 目黒駅 デート
![Page 34: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/34.jpg)
結果
住所じゃなくても探せる!
! 奥渋谷 デート
![Page 35: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/35.jpg)
まとめ
• 「どこで」を探すには全文検索では不十分
• 「地理検索」を組み合わせることで、よりよい検索体験を作れる
• Elasticsearchは地理検索するにも便利!
![Page 36: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/36.jpg)
ご静聴ありがとうございました
![Page 37: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/37.jpg)
おまけ
![Page 38: おでかけスポット検索のむずかしさ - Holidayを支える検索技術](https://reader030.fdocuments.net/reader030/viewer/2022020203/58f9ad5c760da3da068b976d/html5/thumbnails/38.jpg)
「駅名」での検索の場合
• 駅周辺のスポットを検索
• 駅からの距離に応じてスコアを調整
• Elasticsearchでは
• Function Score Query を使う
• 詳しくは http://techlife.cookpad.com/entry/2015/03/12/080000