$ time /usr/ruby/2.0.0/bin/groonga-index-dump /usr/mysql/5.6.15/data/mroonga.mrn real 0m33.430s user 0m29.649s sys 0m2.924s $ ll 合計 16 drwxr-xr-x 2 root root 4096 7月 3 19:14 2013 hsperfdata_root drwxr-xr-x 2 yoku0825 yoku0825 4096 11月 6 11:49 2013 hsperfdata_ttanaka drwxrwxr-x 3 yoku0825 yoku0825 4096 1月 24 12:04 2014 index-dump drwx------ 2 yoku0825 tmux 4096 1月 10 15:19 2014 tmux-3012
--output-directoryで指定しない場合はカレントディレクトリの下にindex-dumpディレクトリを掘る。
$ cd index-dump/ $ ll 合計 2012 drwxrwxr-x 2 yoku0825 yoku0825 2056192 1月 24 12:04 2014 tweets-text.index $ cd tweets-text.index/ $ ll | wc 47997 479962 3723665
index-dumpの下に<テーブル名>-<インデックス名>.indexディレクトリが作られるぽい。
ls -l叩くと泣きたくなるくらいにファイルの数が多い。
$ ll | head 合計 201992 -rw-rw-r-- 1 yoku0825 yoku0825 222 1月 24 12:04 2014 %21%21%21%21%21%21%21%21%21%21%21%21%21%21.dump -rw-rw-r-- 1 yoku0825 yoku0825 218 1月 24 12:04 2014 %21%21%21%21%21%21%21%E3%80%8D.dump -rw-rw-r-- 1 yoku0825 yoku0825 256 1月 24 12:04 2014 %21%21%21%21%21%21%21.dump -rw-rw-r-- 1 yoku0825 yoku0825 337 1月 24 12:04 2014 %21%21%21%21%21%21.dump -rw-rw-r-- 1 yoku0825 yoku0825 216 1月 24 12:04 2014 %21%21%21%21%21%E3%80%8D.dump -rw-rw-r-- 1 yoku0825 yoku0825 417 1月 24 12:04 2014 %21%21%21%21%21.dump -rw-rw-r-- 1 yoku0825 yoku0825 218 1月 24 12:04 2014 %21%21%21%21%E3%80%8D%E3%80%8C.dump -rw-rw-r-- 1 yoku0825 yoku0825 417 1月 24 12:04 2014 %21%21%21%21.dump -rw-rw-r-- 1 yoku0825 yoku0825 212 1月 24 12:04 2014 %21%21%21%28.dump
なんかざっと見ただけで、1つのトークンに対して1つの<トークン>.dumpファイルが出来上がっている予感。
$ cat %21%21%21%21%21%21%21%21%21%21%21%21%21%21.dump index: tweets-text.index term: <!!!!!!!!!!!!!!> domain: tweets-text range: tweets have_section: false have_weight: false have_position: true weight position term_frequency record 0 74 1 tweets[398641294714499072].text $ cat %E3%81%84%E3%81%BC.dump index: tweets-text.index term: <いぼ> domain: tweets-text range: tweets have_section: false have_weight: false have_position: true weight position term_frequency record 0 40 1 tweets[198244626002481152].text
やりたいことは myisam_ftdump 的なことなので、この.dumpファイルをテキトーにパースしてやらないといけないっぽい。
取りあえず、投げやりなPerlワンライナーで。
$ cat `ls | head -1000` | perl -nle 'if (/\sterm:\s<(.+)>\s/) {printf("%d\t%s\n", $count, $term); $term= $1; $count= 0;} elsif (/\s([0-9]+)\s+tweets\[[0-9]+\]\.text$/) {$count+= $1;}' | sort -nr | head 12305 、 11013 。 9295 @ 7042 / 4599 : 3583 。。 3479 # 2577 :// 2561 ( 2243 「
cat *でやろうとしたらなんか怒られた(´・ω・`)
$ cat * | perl -nle 'if (/\sterm:\s<(.+)>\s/) {printf("%d\t%s\n", $count, $term); $ term= $1; $count= 0;} elsif (/\s([0-9]+)\s+tweets\[[0-9]+\]\.text$/) {$count+= $1;}' | sort -nr | head cat: オプションが違います -- '%' 詳しくは `cat --help' を実行して下さい.
これで索引の中の無駄なトークンをあぶりだしてメンテしてやるのがゴールのつもり。
【2014/01/24 13:46】
catがダメなのは"-"で始まるファイルっぽい。
$ for f in *; do cat $f > /dev/null || (echo $f; break); done cat: オプションが違います -- '%' 詳しくは `cat --help' を実行して下さい. -%23.dump cat: オプションが違います -- '%' 詳しくは `cat --help' を実行して下さい. -%25%27.dump cat: オプションが違います -- '%' 詳しくは `cat --help' を実行して下さい. -%26.dump ..
cat ./*にしたら食えた。
$ cat ./* | perl -nle 'if (/\sterm:\s<(.+)>\s/) {printf("%d\t%s\n", $count, $term); $term= $1; $count= 0;} elsif (/\s([0-9]+)\s+tweets\[[0-9]+\]\.text$/) {$count+= $1;}' | sort -nr | head 12305 、 11013 。 10217 _ 9295 @ 7042 / 6456 って 4599 : 4514 mysql 4147 ない 3801 5
うん、mysql多いなオイ。