Slide 1

Slide 1 text

InnoDBͩͬͯγϡοͱ શจݕࡧ͍ͨ͠ʂ 2016/01/11 (݄)
 ୈೋճ CAMPHOR- × KMC ߹ಉ LTେձ

Slide 2

Slide 2 text

͜Μʹͪ͸ʂ ɾ@tanishiking ɾژ౎େֶ޻ֶ෦৘ใֶՊ B3 ɾڈ೥ͷ4݄͙Β͍͔Β CAMPHOR- ɾDBͱ͔ʹڵຯ͋Δ(Ͱ͖Δͱ͸ݴͬͯͳ͍)

Slide 3

Slide 3 text

EXPLAIN ͯ͠·͔͢ʁ

Slide 4

Slide 4 text

SELECT * FROM table WHERE text LIKE ‘%foo%’;

Slide 5

Slide 5 text

SELECT * FROM table WHERE text LIKE ‘%foo%’; ී௨ͷΠϯσοΫεͩͱLIKEݕࡧ͸લํҰக Ͱͳ͍ͱΠϯσοΫε͕࢖༻͞Εͳ͍

Slide 6

Slide 6 text

͔ͳ͍͠

Slide 7

Slide 7 text

ͳΒ͹ શจݕࡧͩʂ

Slide 8

Slide 8 text

શจݕࡧΤϯδϯͱ͔͍Ζ͍Ζ ͋Δ͚Ͳ؀ڥͱͱͷ͑Δͷେม ࠓ͋Δ؀ڥͰεοͱ શจݕࡧ͍ͨ͠

Slide 9

Slide 9 text

MySQL 5.6.4 ͔Β ϑϧςΩετΠ ϯσοΫε͕ InnoDB Ͱ΋࢖͑ Δʂ

Slide 10

Slide 10 text

MySQL 5.6.4 ͔Β ϑϧςΩετΠ ϯσοΫε͕ InnoDB Ͱ΋࢖͑ Δʂ ※ͨͩ͠೔ຊޠͷΑ͏ͳݸʑͷ୯ޠʹ۠੾Γจࣈ͕ͳ͍ݴޠ͸αϙʔτ͠ͳ͍΋ͷͱ͢Δ

Slide 11

Slide 11 text

MySQL 5.6.4 ͔Β ϑϧςΩετΠ ϯσοΫε͕ InnoDB Ͱ΋࢖͑ Δʂ ※ͨͩ͠೔ຊޠͷΑ͏ͳݸʑͷ୯ޠʹ۠੾Γจࣈ͕ͳ͍ݴޠ͸αϙʔτ͠ͳ͍΋ͷͱ͢Δ Ͳ͏͍͏͜ͱʁ

Slide 12

Slide 12 text

೔ຊޠΛ۠੾ΔͨΊʹ͸ʁ mecab ͢΋΋΋΋΋΋΋΋ͷ͏ͪ ͢΋΋ ໊ࢺ,Ұൠ,*,*,*,*,͢΋΋,εϞϞ,εϞϞ ΋ ॿࢺ,܎ॿࢺ,*,*,*,*,΋,Ϟ,Ϟ ΋΋ ໊ࢺ,Ұൠ,*,*,*,*,΋΋,ϞϞ,ϞϞ ΋ ॿࢺ,܎ॿࢺ,*,*,*,*,΋,Ϟ,Ϟ ΋΋ ໊ࢺ,Ұൠ,*,*,*,*,΋΋,ϞϞ,ϞϞ ͷ ॿࢺ,࿈ମԽ,*,*,*,*,ͷ,ϊ,ϊ ͏ͪ ໊ࢺ,ඇཱࣗ,෭ࢺՄೳ,*,*,*,͏ͪ,΢ν,΢ν ෼͔ͪॻ͖

Slide 13

Slide 13 text

೔ຊޠΛ۠੾ΔͨΊʹ͸ʁ ngram ςΩετΛnจࣈ͝ͱʹ۠੾Δ bigram (n = 2) ͳΒ ͜Μʹͪ͸ ↓ ͜Μ, Μʹ, ʹͪ. ͪ͸

Slide 14

Slide 14 text

͘…ۭനͰ۠੾ΒΕͨ จষ͸ ͍͚ΔΜͰ͠ΐ…???

Slide 15

Slide 15 text

CREATE TABLE `test` ( `id` AUTO_INCREMENT NOT NULL PRIMARY KEY, `text` varchar(255) NOT NULL, FULLTEXT KEY `ngram_idx` (`text`) ) Engine=InnoDB DEFAULT CHARSET=utf-8; INSERT INTO `test` (`text`) VALUES ( “͢΋΋ɹ΋ɹ΋΋ɹ΋ɹ΋΋ɹͷɹ͏ͪ” ); INSERT INTO `test` (`text`) VALUES ( “͜ΜɹΜʹɹʹͪɹͪ͸” );

Slide 16

Slide 16 text

҆৺ͯ͠ ͍ͩ͘͞ :)

Slide 17

Slide 17 text

MySQL 5.7.6 ͔Β೔ຊޠɾதࠃ ޠɾؖࠃޠͰར༻Մೳͳ ngram ύʔαʔ͕ InnoDB Ͱαϙʔτʂ μ΢ϯϩʔυ͢Ε͹mecabύʔαʔ΋࢖͑ΔΑʂ

Slide 18

Slide 18 text

CREATE TABLE `test` ( `id` AUTO_INCREMENT NOT NULL PRIMARY KEY, `text` varchar(255) NOT NULL, FULLTEXT KEY `ngram_idx` (`text`) WITH PARSER ngram ) Engine=InnoDB DEFAULT CHARSET=utf-8; INSERT INTO `test` (`text`) VALUES ( “͢΋΋΋΋΋΋΋΋ͷ͏ͪ” ); ngram ͷ n ͷ஋͸ ngram_token_size ͰઃఆՄೳ(σϑΥϧτ͸2)

Slide 19

Slide 19 text

SELECT * FROM table WHERE text LIKE ‘%foo%’;

Slide 20

Slide 20 text

SELECT * FROM table WHERE (MATCH (text) AGAINST (‘“foo”’ IN BOOLEAN MODE));

Slide 21

Slide 21 text

ɾΠϯσοΫεαΠζ͕Ͱ͔͍ ɾΠϯσοΫε࡞੒ʹΊͬͪΌ͔͔࣌ؒΔ

Slide 22

Slide 22 text

MySQL + groonga = mroonga ଞͷબ୒ࢶ ߋ৽ɾૠೖੑೳ͸ mroonga ͷ΄͏্͕ ݕࡧੑೳ͸ InnoDB fulltext index ͷ΄͏্͕ͬΆ͍

Slide 23

Slide 23 text

͋Γ͕ͱ͏ ͍͟͝·ͨ͠