% 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))
辞書ファイルの読みの先頭の一文字とその範囲を保持して、 検索要求が来たら行単位で読み込みながらバイナリサーチを行います。
% java JSKKDicSort SKK-JISYO.L
SKKの辞書ファイルを指定して実行します。
ソート結果は標準出力に出力されます。出力の漢字コードはEUCです。
SKK 9.6のSKK-JISYO.Lをソートするのに8分近くかかります。 メモリも11MB程度使います。(VSZ 2100, RSS 11280)
辞書全体を内部コード(Unicode)に変換しながら読みこみ、 ひとつのStringとして保持します。 各行の先頭の(String内の)位置を配列として持って、その配列をソートします。