カスタマイズ
設定ファイル(senna.conf)について
通常、/var/senna/senna.conf(Windowsではc:\senna\senna.conf)がSennaの設定ファイルとなります。 設定ファイルは、基本的に
設定したいパラメータ名 半角スペース 設定値 改行
という形式が連なったファイルです。
必要のある項目だけ修正ください。 一般的な利用では、INITIAL_N_SEGMENTSを変更する必要はありません。
DEFAULT_ENCODING
DEFAULT_ENCODING 文字コード
Sennaが処理対象とする文字列の文字コードを指定します。 euc, sjis, utf8のいずれかの値を指定してください。 デフォルトはeucです。
MeCabの辞書ファイルの文字コード (MySQLバインディングを利用する場合には、インデックス対象のカラムの文字コードも)を上記で指定したコードに合わせてください。
N-gramのみの利用であればMeCabのインストールは不要
N-gramのみを用いる予定であれば、MeCabは必要ありません。 以下のようにconfigureを実行すれば、MeCabに依存しないSennaをmakeできます。
> ./confiure --without-mecab
NFKCを用いた文字列正規化の抑制
nfkc.cは、ICUが行う正規化相当の正規化を行うソースです。 現段階では、UTF-8の正規化の場合のみ用います。
このソースはRubyで自動生成されており、 大変コンパイル負荷がかかります。
よって、一部環境ではコンパイルが完了しないといった現象が起こります。
NFKCによる正規化が必要ない場合には、 以下のようにconfigureを行ってNFKCを無効にしてください。
> ./confiure --disable-nfkc
Linux AIO/DIOを用いたユーザレベルキャッシュの利用
Linux 2.6以降では、 カーネルのバッファキャッシュを経由せずにファイルに非同期アクセスを行える AIO/DIOという機構が備わっています。
この機構を用いて、 VA Linux Systems Japan の北目さんがSennaのユーザレベルキャッシュ機能を実装しました。
低メモリ消費で高効率なキャッシュなので、 メモリ資源の制約がシビアな環境で 高い性能が要求される局面で効果が期待できます。
ユーザレベルキャッシュの注意点
- Linux 2.6以降専用です。
- 動作の安定性については未確認です。
- rev.130現在では、glib 2.8以上が必要です。
ユーザレベルキャッシュの導入方法
- configure時にaioの使用を指定
> ./configure --enable-aio
- 起動時に環境変数 SEN_AIO_ENABLED に 1 を指定
以上の設定を行ったあとにSennaを利用ください。
ソースコード内で調整できるパラメータ
ソースコードに直接手を入れることによってのみ設定可能なパラメータが存在します。
Senna 本体
パラメータ名 | ソースコード | デフォルト値 | 詳細 |
SEN_LEX_NGRAM_UNIT_SIZE | senna.h | 2 | N-gramのNの数 |
MySQL バインディング
パラメータ名 | ソースコード | デフォルト値 | 詳細 |
SENNA_MAX_N_EXPR | myisam/ft_boolean_search.c | 32 | boolean modeで指定できる式の最大数 |