JSKKServer & JSKKDicSort

目次

  1. JSKKServer: Java版skkserv
  2. JSKKDicSort: Java版skkdic-sort
  3. 変更履歴
  4. 関連する情報へのリンク

JSKKServer: Java版skkserv

Javaで記述したskkservです: JSKKServer.java.gz。 検索方法はskkserv+バイナリサーチパッチと同じ方法です。

% java JSKKServer [-p port] SKK-JISYO.LU
JSKKDicSortでソートした辞書を指定して実行します。 -pオプションでポート番号を指定することもできます。

バイナリサーチのときはUnicodeで比較を行います。 Unicodeでの比較結果は、EUCでの比較結果とは一部("ー"など)異なるようで、 EUCでソートされた標準のSKK-JISYOを使うと一部の単語が検索できません。 そこで、Unicodeでの比較を行ってソートした辞書を用意する必要があります。 JSKKDicSortで行ってください。

Javaの練習として書いてみたものなので、実用向きではありません。 起動に8分もかかりますし、メモリも4MB程度使います(VSZ 2248, RSS 3936)。 また、検索にかかる平均の時間も通常のskkservの4倍程度になります。 (FreeBSD 2.2.7-RELEASE on Libretto70(MMX Pentium 120MHz, Memory 32MB))

辞書ファイルの読みの先頭の一文字とその範囲を保持して、 検索要求が来たら行単位で読み込みながらバイナリサーチを行います。

JSKKDicSort: Java版skkdic-sort

Javaで記述したskkdic-sortです: JSKKDicSort.java.gz。 skkdic-sortがEUCで比較してソートを行うのに対し、 JSKKDicSortはUnicodeでの比較をしてソートを行います。

% java JSKKDicSort SKK-JISYO.L
SKKの辞書ファイルを指定して実行します。 ソート結果は標準出力に出力されます。出力の漢字コードはEUCです。

SKK 9.6のSKK-JISYO.Lをソートするのに8分近くかかります。 メモリも11MB程度使います。(VSZ 2100, RSS 11280)

辞書全体を内部コード(Unicode)に変換しながら読みこみ、 ひとつのStringとして保持します。 各行の先頭の(String内の)位置を配列として持って、その配列をソートします。

変更履歴

関連する情報へのリンク


木原 英人 / KIHARA, Hideto / deton@m1.interq.or.jp
$Date: 1999/02/19 12:37:38 $