tradic

DICT

DICT (Dictionary Server Protocol)はサーバから辞書を引くためのプロトコルで, RFC2229で定義されています。 DICTプロトコル対応のソフトウェアの開発は主にdict.orgで行われています。

URIのスキーマとして dict が定義されており,標準はTCPポート2628が使われます。

DICTサーバの一覧や辞書,ソフトウェアなどはdict.org: Resourcesにまとめられています。

dictdフォーマット

dictdで使用されるフォーマット(dictdフォーマットもしくはdictフォーマット)については,"man dictd"内に書かれています ("DATABASE FORMAT"セクション)。 日本語の説明はほとんどありませんが,Lookupのマニュアルに少しだけ書かれています。

dictdフォーマットでは2つのファイルが使われます。 一つはデータ用で,拡張子は .dict になっています。 あるいは,dictzipコマンドで(gzip形式の)圧縮を行ったファイルは .dict.dz 拡張子を持ちます。 もう一つは検索に使うインデックス用で,拡張子は .index になっています。

.dict ファイルのフォーマットは非常に単純で, 語のエントリが順番に(区切り文字無しで)格納されているだけです (テキストしか含まないバイナリフォーマットという感じ)。

.index ファイルは各行がタブ区切りのTSV (Tab Separated Values)フォーマットになっており, 各行は "見出し語\t開始位置\tデータ長\n" です。 ここで\tはTAB (0x09),\nはLF (0x10)です。 開始位置はバイトオフセット,データ長はバイト数で,ともにBase64 (RFC3548)で記述されます。 なお,インデックスファイルの見出し語は(dictdの指定する方法で)ソートされている必要があります。

例えば次のような .index が提供された場合,

00-database-short	A	y
access	y	Y

00-database-shortを表示する場合はA=0バイト目からy=50バイト分を取り出し, accessを表示する場合はy=50バイト目からY=24バイト分を取り出して(通常はそのまま)表示することになります。

いくつかの見出し語(headword)は特別な意味を持ち, それらには例えばデータベースに関する情報を格納する 00-database-info/00databaseinfo や短いデータベース名を格納する 00-database-short/00databaseshort があります。 詳しくは "man dictd""man dictfmt" を参照してください。

cygwin上でdictd

cygwin上でDICTサーバのdictdを立ち上げるための手順です:

  1. SourceForge.net上のdictプロジェクトからdictdパッケージをダウンロードする (2005年11月現在の最新は dictd-1.10.2.tar.gz)。
  2. tarballを展開して,INSTALLファイルの手順通りにインストール。具体的には,
    1. ./configure
    2. regex/mkhファイルの先頭付近にある"PATH=..."の行を削除。
    3. make
    4. make install
  3. dictd形式の辞書をdictd.orgのftpサイトなどから入手し, 展開した .index ファイルと .dict (もしくは .dict.dz) ファイルを適当なディレクトリに配置する (例えば E:\dict\dict-dbs\)。
  4. 適当な名前(例えば /usr/local/etc/dictd.conf)で次のようなファイルを作成する:
    database web1913 { data "/cygdrive/e/dict/dict-dbs/web1913.dict.dz"
                       index "/cygdrive/e/dict/dict-dbs/web1913.index" }
  5. Cygwin Net Release Setup Programを使って inetd をインストールする(inetutilsパッケージ)。
  6. 適切な設定を行って inetd をサービスとして起動する(inetd の設定などのサイトを参照)。
  7. /etc/inetd.conf に次のような1行を追加する:
    dict    stream  tcp     nowait  root    /usr/local/sbin/dictd -c /usr/local/etc/dictd.conf -i
  8. /etc/services (通常はWindowsのシステムファイルへのショートカット)に次の1行を追加する:
    dict             2628/tcp
  9. inetd を再起動する(コントロールパネル→管理ツール→サービスなどから)。
  10. "dict -h localhost dwarf" などで辞書を引く。

Last Modified: $Id: dict.ja.html,v 1.3 2005/11/28 17:33:25 deq Exp $

Copyright (C) 2005 tradic project. All Rights Reserved.