å¯ã¼ã‘眼ã§ã¼ã‚“やり計算ã—ãŸã ã‘ãªã®ã§ã€é–“é•ã„ãŒã‚ã£ãŸã‚‰ã”指摘ã„ãŸã ã‘ã‚‹ã¨éžå¸¸ã«ã‚りãŒãŸã„ã§ã™m(_"_)m
ã¾ãšå‰æã€‚
ウãƒã§ã¯ã‹ã¤ã¦ã¯Tritonn全盛ã€ä»Šã¯mroonga全盛ãªã€ŒMySQL de FullTextSearchã€ãŒå¤§å¥½ããªæ„Ÿã˜ã§ã‚„ã£ã¦ã„ã¾ã™ã€‚Sphinxã¨ã‹èª°ã‹æ‰‹ã‚’出ã•ãªã„ã‹ãªãã¨æ€ã„ã¤ã¤ã€ã„ã„åŠ æ¸›MySQL de FTSã‹ã‚‰è¶³ã‚’æ´—ã£ã¦å…¨æ–‡æ¤œç´¢ãƒ©ã‚¤ãƒ–ラリã¯MySQLã¨ã¯é€£æºã•ã›ãªã„ã§ã‚„ã‚ã†ãœã€ã¨ã„ã†ã®ã‚‚ã‚ã£ãŸã‚Šã—ã¾ã™ã€‚
ãã“ã§å–り敢ãˆãšç¾çŠ¶ã®æ´—ã„出ã—(?)ã®ä¸€ç’°ã¨ã—ã¦ã€mroongaã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚³ã‚¹ãƒˆã‚’ã¼ã‚“やりã¨è€ƒãˆã¦ã¿ã‚‹ã“ã¨ã«ã—ã¾ã™ã€‚
ã¨ã„ã†ã‹é‹ç”¨ã—ã¦ã„る分ã«ã¯ã“れãŒã‚ツã„。
インデックス用ã®mrnファイルã¯(tokenBigramãªã›ã„ã‚‚ã‚ã£ã¦)データサイズã«å¯¾ã—ã¦ç·šå½¢ã«å¢—ãˆã‚‹ã®ã§ã€ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸å®¹é‡ã¨ã€ã‚ã¨ãれをã‚ャッシュã™ã‚‹ã ã‘ã®ãƒ¡ãƒ¢ãƒªå¢—è¨ãŒã‚‚ã†ã¾ã¾ãªã‚‰ãªã„。
ã˜ã‚ƒã‚実際ã©ã‚Œãらã„食ã†ã®ã‹ã‚’å–り敢ãˆãšè¨ˆç®—ã—ã¦ã¿ã‚‹ã€‚
サンプルデータã¯Twitterã®ãƒ„イート履æ´ã€‚
 ⇒tweets.zipã‚’MySQLã«çªã£è¾¼ã‚“ã§SQLã‚’å¦ã¶(導入編) - ã•よãªã‚‰ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆ
ãŸã ã—全文検索ãŒè©¦ã—ãŸã„ã ã‘ã ã£ãŸã‚Šã€ã‚«ãƒ©ãƒ ã‚’ã‚‚ã‚ã‚‚ã‚列挙ã—ãŸã‚Šã™ã‚‹ã®ãŒã‚‚ã®ã™ã”ãé¢å€’ã ã£ãŸã®ã§
mysql55> CREATE TABLE tweet ( tweet_id BIGINT UNSIGNED PRIMARY KEY, timestamp TIMESTAMP NOT NULL DEFAULT 0, text TEXT) Engine = mroonga;
ã¨è¶…簡略版ã®ãƒ†ãƒ¼ãƒ–ル定義ã«
mysql55> LOAD DATA INFILE '/tmp/tweets.csv' INTO TABLE tweet FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES (tweet_id, @dummy, @dummy, @dummy, @dummy, timestamp, @dummy, text, @dummy);
ã¨ä½™è¨ˆãªã‚«ãƒ©ãƒ ã‚’èªã¿æ¨ã¦ã•ã›ã‚‹ã“ã¨ã§é¢å€’を回é¿ã—ãŸï¼ˆã¤ã‚‚り
ã„ãã¤ã‹ãƒ¯ãƒ¼ãƒ‹ãƒ³ã‚°ã§å¼¾ã‹ã‚Œã¦ã„ã‚‹ã‘ã©ã€ã“ã®æ®µéšŽã§ã¯éžå¸¸ã«äº›æœ«ãªå•題ãªã®ã§æ”¾ç½®ã€‚
ã“ã®çŠ¶æ…‹ã§ã¯mroongaストレージエンジンã«ãƒ‡ãƒ¼ã‚¿ã ã‘ãŒå˜åœ¨ã—ã¦ã„ã‚‹ã¦ã„ã«ãªã‚‹ã€‚
mysql55> SHOW TABLE STATUS LIKE 'tweet'\GMySQLè¶Šã—ã§55Må¼±, datadirã«ä¸¦ã¹ã‚‰ã‚ŒãŸmrnファイルを見るã¨(ã„やデータ以外ã«è‰²ã€…å…¥ã£ã¦ã‚‹ã‚“ã ã‚ã†ãŒ)72MBãらã„。
*************************** 1. row ***************************
Name: tweet
Engine: mroonga
Version: 10
Row_format: Dynamic
Rows: 10045
Avg_row_length: 0
Data_length: 54857728
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)
shell> ll *.mrn* | awk '{i+=$5}END{print i}'
72962048
åŒã˜ã‚‚ã®ã‚’InnoDBã«çªã£è¾¼ã‚€ã¨
mysql55> SHOW TABLE STATUS LIKE 'tw_innodb'\G10MB…?;
*************************** 1. row ***************************
Name: tw_innodb
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 9639
Avg_row_length: 164
Data_length: 1589248
Max_data_length: 0
Index_length: 0
Data_free: 4194304
Auto_increment: NULL
Create_time: 2013-08-17 01:58:25
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
shell> ll mrn/tw_innodb.*
-rw-rw---- 1 mysql mysql 8638 8月 17 01:58 2013 mrn/tw_innodb.frm
-rw-rw---- 1 mysql mysql 9437184 8月 17 01:58 2013 mrn/tw_innodb.ibd
マジã§ï¼Ÿï¼›
ã¾ã 何も全文検索作ã£ã¦ãªã„ã‘ã©ã“ã‚“ãªã‚‚ん?;
( ´-ï½€).oO(ã§ã‚‚最大140æ–‡å—*UTF8ãŒ3ãƒã‚¤ãƒˆã«ä»–ã®ã‚«ãƒ©ãƒ ã§10000行ãらã„ãªã‚‰ã€InnoDBã‚„MyISAMçš„ã«ã¯ã“ã®ç¨‹åº¦ã®ã‚µã‚¤ã‚ºã§å分ç´å¾—ã¨ã„ã†ã‹ãªã‚“ã«ä½¿ã£ã¦ã‚‹ã‚“ã mroonga。。
PlanetMySQL Voting: Vote UP / Vote DOWN