ニコニコニュースと全文検索5. MySQLの全文検索
SQL Parser
Full Text Parser
Storage Engine API
Storage Full Text
Engine Index
5
6. 全文検索Plugin
SQL Parser
Full Text Text Parser
Full Parser (Plugin)
Storage Engine API
Patch
Storage
Storage Full Text
Engine
Engine Index
(Plugin)
6
8. Storage Engineを
置き換えるPlugin(1)
SQL Parser
Storage Engine API
groonga
Storage Engine
8
9. Storage Engineを
変えるPlugin(2)
SQL Parser
Storage Engine API
Sphinx
Storage Engine
SQLを使って検索
対象を登録出来
ない
9
10. Full Text Parserを
MySQL-ftppc 置換えるPlugin
SQL Parser
space mecab bigram Suffix snowball
Full Text Parser
MySQL標準
Storage Engine API の Full Text
Parser
MyISAM Full Text
Index
10
12. ニコニコニュースの検索要件
検索結果が
記事が公開さ 1秒以内に
れたらすぐ検 かえってきて
索したい 欲しい MySQL
を使用
したい
本文とタグで
検索出来れ
ばいい
12
13. 要件で比較
Senna sphinx groonga MySQL-ftppc
要件にあう
検索 ✓ △ ✓ ✓
リアルタイム
インデックス ✓ - ✓ ✓
5.1対応
- ✓ ✓ ✓
13
14. groongaとMySQL-ftppc
• groonga storage engineはVer. 0.1が出たばかり
• groonga を使用するためにコードを書き換えな
いといけない
groonga作者
• branchのftnorm.c/ftnorm.hで置き換えて解
• 最新版でもICUライブラリを使用するとクラッ
決!
シュ
• mecab plugin r126
• メモリ周りの処理でMySQLごと落ちる
• bigram plugin r125 MySQL-ftppc 14
16. MySQL-ftppcとは
• 空白で分割する
space • タグ検索で使用している
• 2文字ずつindexを作成する
bigram • 検索漏れが少ない
• 本文検索で使用している
• 形態素解析を使用
mecab • 新しい単語に弱い
• 接尾辞配列を使用
suffix • index作成でクラッシュする問題がある
snowball • 英語に適したインデックス
16
17. 要件確認
リアルタイム
インデックス
記事が公開さ
れたらすぐ検 性能試験
索したい
簡単な検索
検索結果が
本文とタグで
1秒以内に
検索出来れ
かえってきて
ばいい
欲しい
MySQL
を使用
したい
17