Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20120126 mnlgy 1

13,386 views

Published on

Published in: Technology
  • Be the first to comment

20120126 mnlgy 1

  1. 1. ECサイトにおける検索についての悩みごと© CROOZ,Inc. 1
  2. 2. CROOZが提供するサービス ソーシャルゲーム ブログサイト その他 通販・モール 80サイト © CROOZ,Inc. 2
  3. 3. ECサイトにおける検索について 本日は弊社が提供するECサイト「CROOZMALL」 に関する検索システムに対する取り組みを紹介し ます。 © CROOZ,Inc. 3
  4. 4. ECサイトにおける検索について 企業(経営)におけるECサイトに期待することは 「買ってもらうこと」 ECサイトにおける検索の役割は買ってもらうための 「確率を上げること」 ユーザが欲しいと思うパラメータ  (1)もう欲しい商品があるレベル(狙い撃ち)  → 商品名を蓄積する(ECサイトの場合取扱商品自作)  (2)よく聞く商品、流行っているもの、日常的消耗品など  → 販売実績、検索などの各要素からランキング生成  (3)ソーシャルで繋がっている人が入手したもの(かつ、自分の趣向に合う)  → 難しいけどCROOZならブログなどと連携できる!  (4)勧められれば見るレベル  → MyPageの登録や購入履歴、おねだり系の機能。  (5)気が付いていない気になる商品  → 店舗で気の合う店員さんと雑談してたら購入してた・・・を実現するレベル。 © CROOZ,Inc. 4
  5. 5. ECサイトにおける検索について ECサイトにおける (1)欲しい商品があるレベル(狙い撃ち)   を、効率よく蓄積、検索する方法 ユーザの気持ちを考えると、、、 欲しいと思うものは大抵イメージ。 イメージが固まっているものが欲しい商品。  だからといって正しい名前で検索されるとは限らない。 ユーザ入力文字 ショップ登録文字 クリスタルガイザー 店舗A: クリスタルガイザー クリスタルガイザー 店舗B:  【特価】クリスタルガイザー crystal geyser 店舗C: クリスタル ガイザー【アウトレット】 CRYSTAL GEYSER 店舗D: わけあり★crystal geyser ミネラルウオーター 店舗E: セール:CRYSTAL GEYSER 水 : : その他、類似、typo多数 その他、類似、typo多数 全文×全文 検索のほんの1商品の例。 さすがにこれはキツイ。 © CROOZ,Inc. 5
  6. 6. ECサイトにおける検索について 【現状】 商品数が増えるのと同時にサーバ負荷が高まる。 専任検索エンジニアが不在の場合、身動きが取れなくなる・・・・・。 © CROOZ,Inc. 6
  7. 7. MySQL 5.1.x MyISAM MeCab insert Master 店舗様 select Slave ユーザ 価格順 人気順 新着順 ・・・・・ 裏では毎時間バッチを利用して、「価格順」、「人気順」など 数パターンのソートデータを作成して実態の入れ替えを行っている © CROOZ,Inc. 7
  8. 8. 【今後】検索から分析、マーケティングへ・・・。 ① ブログ検索も対象範囲を広げ、全文化へ・・・・。 Aさん ツケマ14.5mmの購入日記投稿 ブログタイトル 記事タイトル 内容 Aの日記 ツケマ14.5mm 買った・・・ where ~ like ‘keyword%’ 月間アクティブ約700万人のサイト。 投稿内容も流行に敏感であり、投稿内 容、検索ワードは貴重なデータであるため、対応は急務。 © CROOZ,Inc. 8
  9. 9. 【今後】検索から分析、マーケティングへ・・・。 Aさん ツケマ14.5mmの購入日記投稿 ブログタイトル 記事タイトル 内容 Aの日記 ツケマ14.5mm 買った・・・ Bさん ツケマ14.5mmについ て検索 ツケマ14.5mm where ~ like ‘keyword%’ 記事タイトルや内容にまで検索が入っていないため結果は「なし」 © CROOZ,Inc. 9
  10. 10. 【今後】検索×分析×マーケティング×ソーシャル = CROOZ CROOZが考えるユーザを幸せにするシステム(未承認) 意思検索 → マイニング → サービス横断検索 → 最適結果 大切な人がおねだりしています 商品の注目度、ちょっとしたレビュー 繋がりへの近況update お友達はこんなの買ってます 「購入履歴」から「お勧め、注目コーデ」 「買う」までの遷移を楽しく! ファセット型ナビの導入 ※画像はamazonさんより 流行情報は生もの。 データマイニングから価値ある商品を推薦し続ける! © CROOZ,Inc. 10
  11. 11. 【今後の妄想】検索から分析、マーケティングへ・・・。 問い合わせ where ~ like ‘keyword%’ ある・なし 非同期insert ある=注目など・・ ナレッジ 熟成 DB なし=重点営業 DB 非同期insert 問い合わせ 参照DB ある・なし © CROOZ,Inc. 11
  12. 12. 【今後の妄想】検索から分析、マーケティングへ・・・。 結果あり アクション 検索実行 結果 (完全一致) (購入導線) 結果なし 結果なし 結果 (効果の高い) (部分一致) 近似結果 結果 (不一致) 不一致 but あれば売れる 加盟店舗への 情報提供 (マーケ活用) © CROOZ,Inc. 12
  13. 13. 【今後】検索から分析、マーケティングへ・・・。 ① ブログ検索も対象範囲を広げ、全文化へ・・・・。 ② ブログ検索ワードを非同期で蓄積。 商品文言を抜き出 し、モールなど相互流入活用 ① 商品検索ワードを非同期で蓄積。 注目やランキングな どのデータ作成や、注目度が高いのに、そもそも商品がな い場合など、店舗様へのマーケに活用。 ② PCサイト対応。 ファセットなどを導入する! 現在のインフラ、アプリ実装では不安・・・そこで。 © CROOZ,Inc. 13
  14. 14. 検証「やってみた」 Key 目的: 現状のパフォーマンスの問題点、今後増えるデータ量と、検索そのものMessage に対する対応案から、現状のMyISAMから、より汎用性を持たせておくこと。 できればMeCabからも離れることはできないか? <今回の検証候補>  Tritonn → MyISAMの呪縛あり。  MySQL5.6.4(Development relace) → まだ早そう  Tokyo Cabinet , Tokyo Dystopia → また今度?  Groongaストレージエンジン → ★ Groongaストレージエンジン  弊社既存バージョンが5.1.x系で、ここにGroongaストレージエンジンを 追加しようとしたが、色々あって時間切れ。  更地にMySQL5.5系を導入してGroongaを導入。 これなら簡単。 © CROOZ,Inc. 14
  15. 15. 検証「やってみた」 Key たったこれだけ Message rpm -ivh http://packages.groonga.org/centos/groonga-repository-1.0.0-0.noarch.rpm yum update yum -y install MySQL-client yum -y install MySQL-devel yum -y install MySQL-embedded yum -y install MySQL-server yum -y install MySQL-shared yum -y install MySQL-test yum install -y groonga groonga-tokenizer-mecab groonga-devel yum -y install mysql-groonga mysql -u root mysql> INSTALL PLUGIN groonga SONAME ha_groonga.so; mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER soname ha_groonga.so; mysql> SHOW ENGINES; my.cnf もなにも作らずに完成。 mysql> SHOW ENGINES; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | CSV | YES | CSV storage engine | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | groonga | YES | CJK-ready fulltext search, column store | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 10 rows in set (0.00 sec) © CROOZ,Inc. 15
  16. 16. 検証「やってみた」 ベンチマークとるためのデータではなく、弊社クルーズ KeyMessage モールの本番データの一部を利用! OSはCent5系。MySQL(5.5.x)をはじめ、各コンフィグ、 チューニングは行っていない状態での検証です。 ハードは  CPU : X5670 @ 2.93GHz × 1 (12コア)  Disk : SSD なんと、現行本番環境より検証環境のほうが高スペック だったのは内緒。 © CROOZ,Inc. 16
  17. 17. 検証「やってみた」 KeyMessage データ(約38万件) サイズ(約128MB) 単独INSERT MyISAM groonga real 2m22.907s 1m33.408s user 0m9.024s 0m7.599s sys 0m3.334s 0m2.867s SELECTしながら MyISAM groonga INSERT (ロックせず実施) real 2m19.093s 5m46.734s user 0m7.131s 0m8.161s sys 0m4.027s 0m4.856s© CROOZ,Inc. 17
  18. 18. 検証「やってみた」 MyISAM(ロックせず検証) groonga SELECT INSERT SELECT INSERT (回/秒) (回/秒) (回/秒) (回/秒) 30~  60万件 2714 4135 (INSERTのみ) 60~  90万件 2341 3710 (INSERTのみ) 90~120万件 2276 3533 (INSERTのみ) 120万件(SELECT 610 208 のみ) 120~150万件 123 2156 175 746 (SELECT+INSERT) 150万件(SELECT 509 180 のみ) 150~180万件 96 2019 168 667 (SELECT+INSERT 中) 180万件(SELECT 406 165 のみ)© CROOZ,Inc. 18
  19. 19. 検証「やってみた」 KeyMessage MyISAM側の検証でテーブルロックを実施してから のパフォーマンス計測は間に合わず。。。 Insertは何もしなくても早い。 これだけで本番に 適用する価値はありそう。 ただ、groongaには参照も頑張ってもらいたい。 テーブル設計やミドルウエアチューニングで何とか なるのであれば、是非実施したい。 大幅なハード投資が無くても、現在の10倍くらいの データに耐えうるシステムを目指したい。 © CROOZ,Inc. 19
  20. 20. 検証「やってみたい」 KeyMessage MeCabの存在 今回、MeCabからの脱却も目指しているのです が、そもそもMeCabに任せている要件、それを 他で補えるのか? などについて整理している 最中でして、検証は次の機会に。。。 © CROOZ,Inc. 20
  21. 21. さいごに・・・・ KeyMessage CROOZでは技術者を募集しております。 詳細は弊社社員までご気軽に ご相談ください。© CROOZ,Inc. 21

×