mecab-ipadic-2.7.0-20051110 の make 完了せず2006年01月11日 03時28分22秒

MeCab 0.90rc6 の動作確認を行うために
mecab-ipadic-2.7.0-20051110.tar.gz
の make をしたのですが、make が完了せず、無限ループ(あるいは非常に時間がかかっている)状態におちいりました。

:
reading ./Others.csv .. 2
reading ./Postp-col.csv .. 90
reading ./Postp.csv .. 146
reading ./Prefix.csv .. 206
reading ./Suffix.csv .. 1294
reading ./Symbol.csv .. 198
reading ./Verb.csv .. 128946
--> ここで HDD をずっとアクセスしている状態となります。

プロセスを見ると以下の処理で無限ループになるようです。

17752 pts/1 S 0:00 make
17753 pts/1 D 0:45 perl /usr/local/libexec/mecab/mecab-dict-index -c euc
17755 pts/1 S 0:00 /usr/local/libexec/mecab/mecab-tool --darts --input=-

環境は以下の通りです。
* Linux 2.4.20-31.9
* perl, v5.8.0 built for i386-linux-thread-multi
(perl, v5.8.3 built for i686-linux でもダメ)
* gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)


ちなみに ChaSen 用の ipadic-2.7.0 では辞書の作成ができています。

重み付け検索2006年01月11日 13時01分29秒

検索式に重みを指定することで、スコアを操作する検索です。
検索結果をスコア順で表示する場合には、重みを大きくしたものはより上位に表示されます。

例えば検索式が "word1^5 or word2^2"の場合、"word1" の重みが5で "word2"の重みが2となり、"^" は区切り記号となります。

単純な重み付けの実装としては、単語のみに重みの指定ができるものです。

より複雑なものとしては、単語、部分一致検索式、正規表現検索式が考えられます。
フレイズ検索式の場合は、個々の単語に重みを付けることや、フレイズ全体に重みを付けることを検討しなければなりません。

また、グループ検索式にも重みを付けることができても良いでしょう。
フィールド検索式も同様です。
AND,OR,NOT検索は、重み付けされた語を使って演算するだけですので、特に何か特別な処理が必要ということはないでしょう。

注意しなければならないのは、単純な重み付けの実装として、単語のみとした場合でも日本語の場合は、分解してフレイズ検索になることがあることです。
この場合には、分解された個々の単語に指定した同じ重みを付けるのか、
あるいは分解された場合は、指定した重みは無効(重み1)として処理するのかのいづれかを選択しなければならないでしょう。

この例では、重みの区切り記号として "^" を使っていますので、"^" 自体を検索したい場合のことを少し考慮しなければならないということを忘れてはいけません。
Namazu では、"(",")", "{", "}", "\"", "*", "/", "+",":" 等の記号(メタ文字)に特別な意味を持たせていますが、そのほとんどが単語の先頭か末尾といった位置に限られるため、メタ文字のエスケープについてはあまり考えられていません。
メタ文字単体を検索する場合には "^" や {^} といった中身が単一の単語のフレイズ検索の形式で指定する方法があります。(この場合は、単語検索として処理されます。)