読者です 読者をやめる 読者になる 読者になる

mixi engineer blog

ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

レビュー検索あれこれ

algorithm mixi review search

こんにちは。夏休みが待ち遠しくって、夜なべしては旅行関係のサイトを巡っているmikioです。休みといえば、お出かけして美味しいランチ食べたり映画見たり、あるいは家で本読んだりゲームしたり音楽聞いたりしますよね。そんなあなたにお薦めしたいのがレビュー検索です。今回は、そこでのtipsや開発裏話などをお届けします。

mixiレビューとは、amazon.co.jpやぐるなびなどにある商品や店舗などについてユーザの皆さんがレビューを投稿できる機能です。気に入ったり気に入らなかったりする商品などについて一言言いたくなるのが人情というものですが、普通のmixi日記で言及するよりもレビューを書く方が後で読んだ時に有用です。レビュー機能の特徴は、1点から5点までの満足度をつけられることと、写真や説明などの関連情報が参照できることと、そして何より、他のユーザがその商品につけたレビューと比較できることです。

自分でレビューを書いて後で読み返したり友達に見てもらったりするのも楽しいですが、これから買おうとしている商品や行こうとしている店についての既存のレビューを見るのも楽しいです。そんな時にこそレビュー検索が役立ちます。

例えばソケットプログラミングに関する本を探すとしましょう。その場合、キーワードに「ソケット|socket」と入れて、カテゴリを「和書」にして検索します。検索キーワードを空白で区切るといわゆるAND検索になりますが、縦棒(|)で区切るとOR検索になるのがtipsですね。つまり「ソケット」か「socket」を含む和書を探しているというわけです。ちなみに、エクスクラメーションマーク(!)で区切るとNOT検索もできます。NOT検索はカタカナ語の絞りこみに便利で、「コーラ!コーラス!コーラン」などとして、「コーラ」は含むけどそれは「コーラス」や「コーラン」の一部としてではないといった指定ができます。

検索してヒット数が多かった場合は、並び替え機能を使うのが便利です。デフォルトは「登録日順」で、新しいものから表示されます。多くの人が言及しているものを見たい場合は「レビュー数順」にして、満足している割合が多いものを見たい場合は「満足度順」にするといいでしょう。

満足度順とは、対象商品について各レビューの満足度の平均の降順なわけですが、ここでちょっとした裏話があります。実は、キーワードを指定しないで「満足度順」の検索をした場合、完全な満足度順でない結果が表示されるのです。例えば全カテゴリの満足度順の結果は「スラムダンク」が1位なのですが、その満足度平均は5.0でなく4.95です。レビュー数1件でその1件が満足度5である商品はいくつもあるのに。

もちろんこれはわざとやっています。「みんなに良いと言われているものを知りたい」というのが目的なので、一人や二人が5をつけただけのものが上位に表示されてもピンときませんよね。そこでどうするかという議論を社内でしたわけですが、なかなかこれといった解法にたどり着かずに苦労しました。例えば「レビュー数が10以上のものに絞ってから満足度平均でソートする」という案の場合、全般的に精度は良さそうなのですが、レビュー数が比較的少ない新しいカテゴリの場合には対象がほとんどなくなって精度が下がるという欠点がありました。また、「レビュー数の三乗根と満足度平均の積でソートする」という私からの案は、同じく精度は良さそうなのですが、ヘルプ等で説明するときにわかりにくすぎるという欠点がありました。なるほど、実験での精度よりも説明性とか納得性というのが実サービスには重要なのです。

結局のところ、「レビュー数順で上位1000件に絞ってから満足度平均でソートする」という社長からの案に落ち着きました。これなら精度も高いしレビュー数に依存しないし説明性もそこそこだろうということです。ソート順ひとつとってもなかなか奥が深いですよね。インデクサの圧縮アルゴリズムとかばかり追求していては発想がトリッキーになりすぎていけないなと思った次第です。

最後に個人的にレビュー検索でよくつかう技を紹介します。「あー、なにか面白い映画でも見たいな−」と思った時には、レビュー検索でカテゴリを「劇場映画」にして、キーワードに「2007/6/|2007/7/」などと入れて検索してみてください。数字は現在の月と前の月を入力します。この例では、説明文に「2007/6/」または「2007/7/」を含むものが検索され、その部分が公開日の月となっている、今まさに公開されている映画の一覧を見ることができます。あとはレビュー数順や満足度順で並べ替えて、話題のものや評価が高いものから見る映画を決めればよいのです。mixiのレビューって、映画専門のサイトのレビューとはまた少し違う、個人的で率直な感想が読めるので興味深いですよね。