CLOSE

「うどん」の検索結果には何を出すべきか(全2記事)

「うどん」の検索結果には何を出すべきか? Rettyの飲食店検索における技術的工夫 Part2

2019年7月31日、検索技術研究会が主催するイベント「Search Engineering Tech Talk 2019 Summer」が開催されました。「検索」や「検索システム」にまつわる技術や手法を共有する本イベント。第3回となる今回は、3人のエンジニアが、現場の経験を通して学んだノウハウや、検索にまつわる知見を語ります。プレゼンテーション「『うどん』の検索結果には何を出すべきか」に登壇したのは、Retty株式会社の李晟圭(イ・ソンギュ)氏。講演資料はこちら

飲食店の店名と検索結果について

李晟圭(イ・ソンギュ)氏:Rettyの中で呼んでいる「Search」と呼んでいるものについてですが、みなさんご存知の検索結果として店舗が並ぶ「検索結果」と呼ばれる機能ですね。そこを作っていくための内容になります。これはSuggestである程度ID化が成功しているのであれば、そんなに悩むことはないです。恵比寿というIDがあって、そこに焼肉というカテゴリーのIDがあれば、それを組み合わせてそのIDに合致するものをフィルターし、スコアリングして出すだけの話になりますね。

それがだめだったとしても、ユーザーさんがちゃんと焼肉と入力していただいているのであれば、それと完全一致するカテゴリーやジャンルとかを合わせてID化して出してあげることもできます。これはよくある話にはなりますね。

問題はやっぱり店名なんですよね。地道にしっかりデータを整備していくしかない。ここでまた悩みの話が出くるんですけど、読み仮名が非常に変わっていたり……。よくキラキラネームみたいなのがあるじゃないですか。

(会場笑)

あとは英語名をカタカナで書いてあったり、また英語そのもので読まなきゃいけなかったりする店名もありますし、あとは区切りがよくわからないみたいなところや、店名に記号の星が入っていたりすると思うんですけど、「これはどうすればいいんだ?」となります。

「鳳」と「凰」とかはユーザーさんも入力するときによく間違われたりするんですよ。

店名はユーザーさんがそんなにハッキリ覚えていないときもあるので、ユーザーさんが入力するときはこういうところで間違われたりすることがあります。こういうところはElasticsearchを使っているのでFuzzinessを使ってレーベンシュタイン距離を使って対応しているので「1文字違いは許容」し、どちらかと言うと若干広めにとっていますね。

店名の話をもうちょっとさせてください。先ほども出てきました「恵比寿・ざぶとん・うどん」。

「恵比寿」というのは、店名になり得るけど、エリアがすでにID化されて入っていればこれは解決できるので、いったん飛ばします。

「ざぶとん」は先ほども話した通りですね。

希少部位としてあったり、店名でもありますよね。ざぶとんというメニューがある。「じゃあ焼肉屋なのか?」と言うと、これは麻布十番に実際にある店舗なんですけど、座れるざぶとんが置いてあるのカフェなんですね。食べるざぶとんが置いてあるカフェではない。

そのジャンルとまったく関係ない店舗のパターンがあります。ユーザーさんが「ざぶとん」という名前のお店に行きたくてユーザーさんが「ざぶとん」と入力して検索をしたら我々は何を出せばいいのか? カテゴリで一致させてカテゴリでバンと出してユーザーさんが行きたい「ざぶとん」というカフェは行けないです。

五反田の「うどん」は何を指すか?

そして、同じく「うどん」ですね。これも同じで店名に投げると言いました。うどんは五反田の名店なんです。

五反田にある名店なんですけど、これは何の名店なのかと言うと、カレー屋です。

(会場笑)

この話をするとみなさん頭の中で1つ浮かぶと思います。これですよね。カレーうどんです。

これじゃないんです。本当に正真正銘のカレー屋です。

(会場笑)

「うどんという単語をもって我々は何を出せばいいんだ?」というのが、この回の題名にもなっていました。検索結果の一番上に「店名のうどんですか? それともジャンルとしてのうどんですか?」というの出して、ユーザーさんに1回投げて選んでもらうというパターンも、もちろんあります。

ただ、Rettyの中ではいったん店名とジャンルのどちらも検索結果に表示させることにしました。では、店名とジャンルの一致のどちらを優先するべきなのか? 我々Rettyの中で話をしまして、Rettyでは今のところ店名を優先しています。なぜなら店名にジャンルと一致する名前が入ってたとしたときに、そのジャンル名と店名がまったく違うパターンはそんなに多くないからなんです。

ラーメンと書いてあって、ラーメンが出ないお店はあるかもしれないです。でもそこまでこだわる必要があるか。店名だったら店名で出してあげようとなりますね。ラーメンの専門店である確率は非常に高いので、それで出していくという形をとっています。

検索結果の表示順

というところで、検索において表示の話をつなげていきたいと思います。

入力内容は先ほど枠が2つあると話したんですけど、その中でエリアとジャンルと目的が表示順に影響してきます。ユーザーさんの投稿をベースにしてRettyの中での人気度が決まります。このロジックは別の組織でやっているので私も知らないんですけど、スコアという表現はあまり使わないんですけど、人気度を利用したスコアをベースとしています。

なので基本的にユーザーさんに人気があるお店で投稿がされているのであれば、Rettyの検索結果で上に表示されやすいかなというところですね。

ここで特徴的なところを何個かピックアップしてみました。駅で探す場合の表示順を出してみます。

駅から店舗までの距離によるスコアリングも行います。駅という特定の場所からの検索なので、その駅の周辺がいいでしょうというところですね。なので、駅の座標から検索することになっています。でも単純に近いだけで強くすると、みなさんご存知の駅周辺に多いチェーン店が有利になってきます。

チェーン店は駅の周辺に店舗を多く出しているのですが、Rettyの価値は「見つかる」体験にありまして、新しい店舗が見つかるとか、行ってない店舗が見つかるとか。チェーン店は皆さんすでに知っていますので、正直ユーザーみなさんに「こういう店舗がありますよ」というところの体験にはならないかなと思っています。グルメサイトの検索の存在理由は、チェーン店を紹介するためではないということです。

なので、悩んだ末に1つ考えました。一定距離区間はスコアを一緒にすることにしました。

0~400メートルの間が徒歩5分ですね。その間は距離によるスコアは一定にします。0~400メートル間は人気度が高いところが上に来やすいかなという、単純な発想ですね。

でも、すべての駅にその距離区間で大丈夫なのか? 新宿駅と私の最寄りの厚木駅、江ノ島駅では距離の意味がぜんぜん違います。

新宿駅はターミナルが多かったので、400メートルでは話になりません。厚木駅で400メートルは遠いとか、そもそも江ノ島駅では0~400メートルの間じゃなくて1,200メートル離れてるところが主戦場で、その駅の特徴が明確に出るところがあります。

ジャンル・目的で探す場合の表示順

ジャンルで探す店舗の場合、これはメインジャンルが一番優先されます。

目的もそうですね。ランチとディナーでは目的が違うので、目的にあったジャンルを優先にしています。ランチではフレンチは好まれないかもしれないですけど、ディナーではニーズが多いので少し上げるとか、そういうところもやっています。

一言でランチと言ってしまっても、いろんな意味があります。

昼食という時間帯だったり、ジャンルとしてラーメンは昼食として食べられるけどコーヒーとかを昼食として済ませたい人は少ないですよね。あとは予算もランチの要素ですね。ランチで5,000円で検索をされる方はいらっしゃるかもしれませんが、1000円程度が予算感としてあったり。

ここらへんは、先ほども話したとおり、これだけのものが混ざっているような目的なので、検証が非常に難しく課題も多いです。

ただ、「恵比寿でデート!」という簡単なもので多くのニーズをカバーできるようなものがあるので、かなりポテンシャルが高いんじゃないかなと思っています。

なぜRettyは検索にこだわるのか

まとめに入りまして、課題です。

表示順の検証手法がまだ定まっていないのが、Rettyの課題にあります。今は人力が多いです。各地域に詳しい社員がやたらといるので「そこらへんでここは良いお店なの?」とか、そういう確認になったりもします。あとは施策後の効果測定ですね。実際に出してみて、ユーザーさんの反応を見るところで、いったんはがんばっているところですね。

実際にログによる分析をやってるものの活用はまだ進んでいないです。メタデータの拡充もそんなに進んではいないので行っていきたいですね。あとは新しいサジェストの仕組みを作っていきたいです。

現状は1、2名が片手間でやっているようなものなので、そこは非常に大変なのですが、それにも関わらず凝っているのは理由があります。私がとくに検索にこだわっているんですけど、ユーザーさんがグルメサービスを利用する最大の目的は「来店」ですよね。お店に行きたい、おいしいお店に行きたい、というところですね。

外食はランチを軽く済ませる場合とか、そこらへんのカフェでコーヒーを飲む体験だけなのかもしれないですけど、人によってはプロポーズを行うための飲食店探しを行う方もいらっしゃる。人生の中で二度とない大事な旅行で、大事な人との食事のためにRettyというサービスを使われている方もいらっしゃるかもしれない。

そういうユーザーさんの方々にサービス側の都合だけで提供するだけでなく、ユーザーさんとのインタラクションがちゃんととれるような唯一無二の機能だと思っています。なので、私は検索をがんばっています。

ご清聴ありがとうございました。

駅からの距離に関すること

司会者:質問のある方はいますか? 店名にジャンルが入ってる「赤坂ラーメン」とかそうですよね。店名にラーメンが入っていたり、店名に地名が入っていたり。

:博多ラーメンとかもですね。

(会場笑)

司会者:すごいおもしろいなと思いました。質問ありませんか?

質問者1:すみません。最後の課題でお話されていた人目の評価と効果測定をしているお話なんですけど、ここって相関は出たりしますか? 例えば高田馬場だったら、おいしいラーメン屋さんとか並べちゃうんですけど、果たしてそれがRettyユーザーさんにうけるかと言ったら難しい気がしていて、人目と効果測定の間でちゃんとつながっているのかなと気になりました。

:現状だと、地方の各駅停車の駅みたいなところは正直見れていなくて、どちらかというと都内の有名駅や有名エリアなどが中心ではあります。そこらへんに関しては、ある程度詳しい人間がけっこういまして、それを中心にそもそも出してる人気度というのもユーザーさんから認められた店舗が並ぶ傾向があるので、その中である程度「実際に行ってみた」などを中心にやっているのでユーザーさんの反応ですね。

効果測定をしていく中ではわりとつながっている傾向ではあります。ただ、勝率でいうと6割ぐらいですかね。6、7割ぐらい。その中で「これなんでつながらないんだ?」も、もちろん上がってくるので、そこは分析して、また別の口を探していく。これが重なって、例えば距離が遠かったとかそういう話をして、距離の位置をどう調整するのかの話をしています。

質問者1:ありがとうございます。

司会者:他になければ……。

質問者2:初めまして……じゃないか。自分は地図の検索をやっていたんですけど、さっき駅からの距離で400メートルと言ってましたけど、それは現状全部固定で取っているんですか?

:違いますね。あれはあくまでも例でありまして、駅によっては100メートル以内が良い場合もありますし、そこに良いお店がけっこう凝縮されている場合もありますよね。例えば駅ビルがありまして、その中にいわゆるユーザーさんに人気のある店舗が入っている場合は、その中で見ていかなきゃいけない。

そこは100メートルはちょっと言い過ぎたんですけど、先ほど0から400メートルと言ったのは、徒歩5分を表現したくてそうしているだけであって、例えば新宿だったら0から400メートルだったらたぶん駅構内です。そこにユーザーさんに人気のあるお店、我々Rettyが媒体として紹介できるお店がどれくらいあるのかを見ていくかたちになりますね。

そしたら、まずそこは一定のレベルにして、もしかしたらそこがスコアリングとしていくなら、その0から400メートルというのを下げるかもしれないという判断もあります。「ここは駅構内なので」というところがあります。新宿みたいなところはそういう傾向でもあります。

質問者2:それは駅ごとに属性を出せてて……。

:そうです。なので駅自体に、例えば駅からの半径3キロメートルとか、都道府県によっては半径5キロメートル、10キロメートル。なぜなら新幹線が止まる駅の車での移動がベースになる駅だったら2キロメートルや3キロメートルの話ではなくなるので、そういう場合は「お店がどこでユーザーさんが投稿するのか」とかそこらへんを見ていきます。

質問者2:ありがとうございます。

司会者:じゃあ何か質問がありましたら懇談会の場でお願いします。じゃあ、ありがとうございました。

:ありがとうございました。

(会場拍手)

続きを読むには会員登録
(無料)が必要です。

会員登録していただくと、すべての記事が制限なく閲覧でき、
著者フォローや記事の保存機能など、便利な機能がご利用いただけます。

無料会員登録

会員の方はこちら

この記事のスピーカー

同じログの記事

コミュニティ情報

Brand Topics

Brand Topics

  • 今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは

人気の記事

新着イベント

ログミーBusinessに
記事掲載しませんか?

イベント・インタビュー・対談 etc.

“編集しない編集”で、
スピーカーの「意図をそのまま」お届け!