20120126 mnlgy 1

  • 10,525 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
10,525
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ECサイトにおける検索についての悩みごと© CROOZ,Inc. 1
  • 2. CROOZが提供するサービス ソーシャルゲーム ブログサイト その他 通販・モール 80サイト © CROOZ,Inc. 2
  • 3. ECサイトにおける検索について 本日は弊社が提供するECサイト「CROOZMALL」 に関する検索システムに対する取り組みを紹介し ます。 © CROOZ,Inc. 3
  • 4. ECサイトにおける検索について 企業(経営)におけるECサイトに期待することは 「買ってもらうこと」 ECサイトにおける検索の役割は買ってもらうための 「確率を上げること」 ユーザが欲しいと思うパラメータ  (1)もう欲しい商品があるレベル(狙い撃ち)  → 商品名を蓄積する(ECサイトの場合取扱商品自作)  (2)よく聞く商品、流行っているもの、日常的消耗品など  → 販売実績、検索などの各要素からランキング生成  (3)ソーシャルで繋がっている人が入手したもの(かつ、自分の趣向に合う)  → 難しいけどCROOZならブログなどと連携できる!  (4)勧められれば見るレベル  → MyPageの登録や購入履歴、おねだり系の機能。  (5)気が付いていない気になる商品  → 店舗で気の合う店員さんと雑談してたら購入してた・・・を実現するレベル。 © CROOZ,Inc. 4
  • 5. ECサイトにおける検索について ECサイトにおける (1)欲しい商品があるレベル(狙い撃ち)   を、効率よく蓄積、検索する方法 ユーザの気持ちを考えると、、、 欲しいと思うものは大抵イメージ。 イメージが固まっているものが欲しい商品。  だからといって正しい名前で検索されるとは限らない。 ユーザ入力文字 ショップ登録文字 クリスタルガイザー 店舗A: クリスタルガイザー クリスタルガイザー 店舗B:  【特価】クリスタルガイザー crystal geyser 店舗C: クリスタル ガイザー【アウトレット】 CRYSTAL GEYSER 店舗D: わけあり★crystal geyser ミネラルウオーター 店舗E: セール:CRYSTAL GEYSER 水 : : その他、類似、typo多数 その他、類似、typo多数 全文×全文 検索のほんの1商品の例。 さすがにこれはキツイ。 © CROOZ,Inc. 5
  • 6. ECサイトにおける検索について 【現状】 商品数が増えるのと同時にサーバ負荷が高まる。 専任検索エンジニアが不在の場合、身動きが取れなくなる・・・・・。 © CROOZ,Inc. 6
  • 7. MySQL 5.1.x MyISAM MeCab insert Master 店舗様 select Slave ユーザ 価格順 人気順 新着順 ・・・・・ 裏では毎時間バッチを利用して、「価格順」、「人気順」など 数パターンのソートデータを作成して実態の入れ替えを行っている © CROOZ,Inc. 7
  • 8. 【今後】検索から分析、マーケティングへ・・・。 ① ブログ検索も対象範囲を広げ、全文化へ・・・・。 Aさん ツケマ14.5mmの購入日記投稿 ブログタイトル 記事タイトル 内容 Aの日記 ツケマ14.5mm 買った・・・ where ~ like ‘keyword%’ 月間アクティブ約700万人のサイト。 投稿内容も流行に敏感であり、投稿内 容、検索ワードは貴重なデータであるため、対応は急務。 © CROOZ,Inc. 8
  • 9. 【今後】検索から分析、マーケティングへ・・・。 Aさん ツケマ14.5mmの購入日記投稿 ブログタイトル 記事タイトル 内容 Aの日記 ツケマ14.5mm 買った・・・ Bさん ツケマ14.5mmについ て検索 ツケマ14.5mm where ~ like ‘keyword%’ 記事タイトルや内容にまで検索が入っていないため結果は「なし」 © CROOZ,Inc. 9
  • 10. 【今後】検索×分析×マーケティング×ソーシャル = CROOZ CROOZが考えるユーザを幸せにするシステム(未承認) 意思検索 → マイニング → サービス横断検索 → 最適結果 大切な人がおねだりしています 商品の注目度、ちょっとしたレビュー 繋がりへの近況update お友達はこんなの買ってます 「購入履歴」から「お勧め、注目コーデ」 「買う」までの遷移を楽しく! ファセット型ナビの導入 ※画像はamazonさんより 流行情報は生もの。 データマイニングから価値ある商品を推薦し続ける! © CROOZ,Inc. 10
  • 11. 【今後の妄想】検索から分析、マーケティングへ・・・。 問い合わせ where ~ like ‘keyword%’ ある・なし 非同期insert ある=注目など・・ ナレッジ 熟成 DB なし=重点営業 DB 非同期insert 問い合わせ 参照DB ある・なし © CROOZ,Inc. 11
  • 12. 【今後の妄想】検索から分析、マーケティングへ・・・。 結果あり アクション 検索実行 結果 (完全一致) (購入導線) 結果なし 結果なし 結果 (効果の高い) (部分一致) 近似結果 結果 (不一致) 不一致 but あれば売れる 加盟店舗への 情報提供 (マーケ活用) © CROOZ,Inc. 12
  • 13. 【今後】検索から分析、マーケティングへ・・・。 ① ブログ検索も対象範囲を広げ、全文化へ・・・・。 ② ブログ検索ワードを非同期で蓄積。 商品文言を抜き出 し、モールなど相互流入活用 ① 商品検索ワードを非同期で蓄積。 注目やランキングな どのデータ作成や、注目度が高いのに、そもそも商品がな い場合など、店舗様へのマーケに活用。 ② PCサイト対応。 ファセットなどを導入する! 現在のインフラ、アプリ実装では不安・・・そこで。 © CROOZ,Inc. 13
  • 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. 検証「やってみた」 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. 検証「やってみた」 ベンチマークとるためのデータではなく、弊社クルーズ KeyMessage モールの本番データの一部を利用! OSはCent5系。MySQL(5.5.x)をはじめ、各コンフィグ、 チューニングは行っていない状態での検証です。 ハードは  CPU : X5670 @ 2.93GHz × 1 (12コア)  Disk : SSD なんと、現行本番環境より検証環境のほうが高スペック だったのは内緒。 © CROOZ,Inc. 16
  • 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. 検証「やってみた」 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. 検証「やってみた」 KeyMessage MyISAM側の検証でテーブルロックを実施してから のパフォーマンス計測は間に合わず。。。 Insertは何もしなくても早い。 これだけで本番に 適用する価値はありそう。 ただ、groongaには参照も頑張ってもらいたい。 テーブル設計やミドルウエアチューニングで何とか なるのであれば、是非実施したい。 大幅なハード投資が無くても、現在の10倍くらいの データに耐えうるシステムを目指したい。 © CROOZ,Inc. 19
  • 20. 検証「やってみたい」 KeyMessage MeCabの存在 今回、MeCabからの脱却も目指しているのです が、そもそもMeCabに任せている要件、それを 他で補えるのか? などについて整理している 最中でして、検証は次の機会に。。。 © CROOZ,Inc. 20
  • 21. さいごに・・・・ KeyMessage CROOZでは技術者を募集しております。 詳細は弊社社員までご気軽に ご相談ください。© CROOZ,Inc. 21