ECナビ商品検索でのSolrの利用

株式会社 EC ナビシステム本部 EC ナビラボ春山征吾

p.1/17

アジェンダ

▶ EC ナビでの Solr の利用 ▶ EC ナビ商品検索の概要 ▶ システム構成 ▶ ECNaviTokenizer ▶ 問題点

p.2/17

ECナビでのSolrの利用

▶ 商品検索 ▶ ソーシャルブックマークサイト Buzzurl

での検索 ▶ ...

p.3/17

商品検索でのSolrの利用

以下で Solr を利用しています. ▶ 通常の全文検索 (EC ナビとすべての OEM) ▶ アイテム一覧ページ (一部の OEM を除く) ▶ NavicSearch API

p.4/17

ECナビ商品検索の概要(続き)

件数約 2300 万件クエリ数/日最大約 100 万元データサイズ約 10GB インデックスサイズ約 18GB

p.5/17

利用しているSolrの機能

▶ DistributedSearch(shards) ▶ rsync でのレプリケーション ▶ ファセット ▶ 独自 Tokenizer の組込み

p.6/17

\underline{デモ}

p.7/17

\underline{システム構成}

p.8/17

マシンスペック

インデックス作成機メモリ 4GB HDD 120GB RAID なし

検索機メモリ 18GB HDD 120GB RAID1+0

p.9/17

ソフトウェア構成

▶ Solr 1.3 ▶ Tomcat 6 ▶ Sun JDK 1.6 ▶ CentOS 4.6

p.10/17

インデックス作成

▶ 1 日 1 回インデックス作成

→ rsync でレプリケーション ▶ shard を 3 つにわけて並列に更新 ▶ インデックス更新にかかる時間は,

2 時間

p.11/17

検索

▶ 検索エンジンのロボットからのクエリが

多数 ▶ そのため, 4 台のマシン中 2 台がロボッ

ト用 2 台が人間用

p.12/17

検索(続き)

どれくらいロボットからのクエリが多いかというと

{ロボット50 万〜80 万/日 \atop それ以外 20 万弱/日}

p.13/17

ECNaviTokenizer

武田さんの CJKTokenizer を改造したもの ▶ 「つのだ☆ひろ」「漫★画太郎」といっ

た語句の検索のために「☆」などの文字があってもなくても同じ Token が出力されるようにした

p.14/17

ECナビ独自のTokenizer(続き)

▶ 商品の型番によくある「cyber-shot」「cybershot」などといったハイフンの表記揺れに対応するため, 「cyber-shot」から「cyber」「shot」「cybershot」という Token を生成するようにした. (検索時には, すべてのハイフンは取り除いてクエリが送られる)

▶ いわゆる半角カナを全角カナに正規化するようにした

p.15/17

問題点

▶ インデックスがメモリに乗らない大きさ ▶ 検索エンジンロボット由来のクエリには

キャッシュの効果がない ▶ Disk Access が発生→ HDD がボトル

ネック

p.16/17

\underline{というわけでLTに続く}

p.17/17