sdic 再インストール

rdic が上手くいって, 気になったのが sdic.
以前 rdic のインストールが上手くいってなかった原因が変換にあったのは, 間違いないから,
こっちも変換でまずいところがあったかもしれないと思い, 再インストールしてみる.
ググッてたら, 試してみたいことも見つかったしね.



まずは, ここ↓を参考に sdic を普通にインストール.

辞書は, ~/lib/dict 以下, lisp ファイルは, ~/site-lisp/sdic 以下にした.
まあ, 対した問題もなく完了.


次に, ここにある sary を利用して高速検索というのが気になったので, やってみる.
まずは, sary の形式に変換する.
ちょっと時間かかる. でも時間より問題は, ファイルの大きさ.

$ mksary -c EUC-JP eijirou.sdic
index:  100% |ooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:15
sort:   100% |ooooooooooooooooooooooooooooooooooooooooo| Time: 00:02:56
[khiker@khlin015 ~/lib/dict]
$ mksary -c EUC-JP waeijirou.sdic
index:  100% |ooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:50
sort:   100% |ooooooooooooooooooooooooooooooooooooooooo| Time: 00:03:55
[khiker@khlin015 ~/lib/dict]
$ lh
合計 1.1G
-rw-r--r-- 1 khiker khiker  86M 2007-05-19 06:15 eijirou.euc
-rw-r--r-- 1 khiker khiker  95M 2007-05-19 08:44 eijirou.sdic
-rw-r--r-- 1 khiker khiker 301M 2007-05-19 08:51 eijirou.sdic.ary
-rw-r--r-- 1 khiker khiker  15M 2007-05-19 06:27 reiji.euc
-rw-r--r-- 1 khiker khiker 2.6M 2007-05-19 06:17 ryaku.euc
-rw-r--r-- 1 khiker khiker  99M 2007-05-19 06:27 waeiji.euc
-rw-r--r-- 1 khiker khiker 103M 2007-05-19 08:44 waeijirou.sdic
-rw-r--r-- 1 khiker khiker 329M 2007-05-19 08:55 waeijirou.sdic.ary

なんという馬鹿でかさ.
まあ, HDD には十分余裕があるからいいさ.
ちなみに変換は, UTF-8 にしたかったけど, なんか警告が出まくって怖くなったから止めた.



あとは, さっきの sary のサイトに書いてあるように, .emacs に設定を書く.
こんな感じかな. 英和だけでなく, 和英も足してみた.

(autoload 'sdic-describe-word "sdic" "search word" t nil)
(autoload 'sdic-describe-word-at-point "sdic"
  "カーソル位置の英単語の意味を調べる" t nil)
;; ----- sdicが呼ばれたときの設定
(eval-after-load "sdic"
  '(progn
     ;; saryのコマンドをセットする
     (setq sdicf-array-command "/usr/bin/sary")
     ;; sdicファイルのある位置を設定し、arrayコマンドを使用するよう設定(現在のところ英和のみ)
     (setq sdic-eiwa-dictionary-list
           '((sdicf-client "/home/khiker/lib/dict/eijirou.sdic"
                           (strategy array)))
           sdic-waei-dictionary-list
           '((sdicf-client "/home/khiker/lib/dict/waeijirou.sdic"
                           (strategy array))))
     ;; saryを直接使用できるように sdicf.el 内に定義されているarrayコマンド用関数を強制的に置換
     (fset 'sdicf-array-init 'sdicf-common-init)
     (fset 'sdicf-array-quit 'sdicf-common-quit)
     (fset 'sdicf-array-search
           (lambda (sdic pattern &optional case regexp)
             (sdicf-array-init sdic)
             (if regexp
                 (signal 'sdicf-invalid-method '(regexp))
               (save-excursion
                 (set-buffer (sdicf-get-buffer sdic))
                 (delete-region (point-min) (point-max))
                 (apply 'sdicf-call-process
                        sdicf-array-command
                        (sdicf-get-coding-system sdic)
                        nil t nil
                        (if case
                            (list "-i" pattern (sdicf-get-filename sdic))
                          (list pattern (sdicf-get-filename sdic))))
                 (goto-char (point-min))
                 (let (entries)
                   (while (not (eobp)) (sdicf-search-internal))
                   (nreverse entries))))))
     ;; おまけ--辞書バッファ内で移動した時、常にバッファの一行目になるようにする
     (defadvice sdic-forward-item (after sdic-forward-item-always-top activate)
       (recenter 0))
     (defadvice sdic-backward-item (after sdic-backward-item-always-top activate)
       (recenter 0))))

体感的に sary 使ったのと, そうでないのとで, そんなに変わる気がしないけど,
まあやっておこうかな.
ちなみに速度は, 十分使えるレベルで速い.
せっかく入れた rdic を使わなくなりそうw
まあ, あっちは, 例文と略語の検索にも使えるから, それ専用にしてしまってもいいかもしれない.

追記

sdic 超使える.
今までの速度と比べてめちゃくちゃ速い.
やっぱり, 今までは, 生成した辞書ファイルがおかしかったみたいね.
検索に時間かかりまくってたから.
sary の効果かもしれないけど, 一瞬で検索結果が出るね.

更新時刻

2007年, 5月19日, 9:43