Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [namazu-users-ja] Re: はじめましてタイからの参加です。



 From: Hajime BABA <hajime.baba@xxxxxxxxx>
 Subject: [namazu-users-ja] Re: はじめましてタイからの参加です。
 Date: Wed, 15 Aug 2001 23:26:30 +0900

 > これで、普通に mknmz すれば、タイ語のファイルを分かち書きしながら
 > インデックスすることができました。インデックスファイルの NMZ.w を
 > 見れば、分かち書きできていることはわかります。ただし、こちらの環境
 > ではタイ語を入力することができないので、確認できたのはここまでです。
 > そもそも、私はタイ語は読めませんので正しいかどうかもよくわかりませ
 > ん。しかし、たぶんタイ語をキーワードにしても検索できるとおもいます
 > ので、よろしければお試し頂けませんでしょうか。

タイ語の検索で見ていたら、nmz/l10n-ja.c の nmz_is_lang_ja() が単純
にバグっていることに気が付きました。タイ語に限らず、ISO-8859-1系の
言語で検索した場合、これにひっかかる可能性があるのではないかとおも
います。


--- nmz/l10n-ja.c.orig	Tue Jun 26 16:42:46 2001
+++ nmz/l10n-ja.c	Thu Aug 16 16:03:29 2001
@@ -47,13 +47,13 @@
     const char *lang;
 
     lang = nmz_get_lang_ctype();
-    if (strcmp(lang, "japanese")) {
+    if (strcmp(lang, "japanese") == 0) {
 	return 1; /* TRUE */
     } 
-    if (strcmp(lang, "ja")) {
+    if (strcmp(lang, "ja") == 0) {
 	return 1; /* TRUE */
     } 
-    if (strncmp(lang, "ja_JP", 5)) {
+    if (strncmp(lang, "ja_JP", 5) == 0) {
 	return 1; /* TRUE */
     } 
     return 0; /* FALSE */


以下に実験結果を示します。/usr/bin/namazu は古いもの、
/usr/local/bin/namazu は nmz/l10n-ja.c に修正を加えたものです。
LC_ALL=C なのに勝手に検索語を分かち書きする、一番上の動作はおかし
いはずです(よね?)。なお、LANGUAGE は設定していません。

==================================================================
baba@sango/home/baba/Namazu/test[180]% setenv LC_ALL C
baba@sango/home/baba/Namazu/test[181]% /usr/bin/namazu 日本語検索 .
Results:

References:  {  [ 日本語: 3 ]  [ 検索: 4 ]  :: 0 } 

No document matching your query.
baba@sango/home/baba/Namazu/test[182]% /usr/local/bin/namazu 日本語検索 .
Results:

References:  [ 日本語検索: 0 ] 

No document matching your query.
baba@sango/home/baba/Namazu/test[183]% setenv LC_ALL ja
baba@sango/home/baba/Namazu/test[184]% /usr/bin/namazu 日本語検索 .
検索結果

参考ヒット数:  {  [ 日本語: 3 ]  [ 検索: 4 ]  :: 0 } 

検索式にマッチする文書はありませんでした。
baba@sango/home/baba/Namazu/test[185]% /usr/local/bin/namazu 日本語検索 .
検索結果

参考ヒット数:  {  [ 日本語: 3 ]  [ 検索: 4 ]  :: 0 } 

検索式にマッチする文書はありませんでした。

==================================================================


あと、分かち書きしないタイ語では、検索語として複合語が与えられるこ
ともあるはずですから、LC_ALL=th をサポートするように、nmz/search.c 
の nmz_do_searching() で

        /* If under Japanese mode, do wakatigaki (word segmentation) */
        if (nmz_is_lang_ja()) {
            if (nmz_wakati(tmpkey)) {
                val.stat = ERR_FATAL;
                return val;
            }
            /* Re-examine because tmpkey is wakatied. */
            mode = detect_search_mode(tmpkey);
        }

の if (nmz_is_lang_ja()) のところを、if (nmz_needs_wakati()) とか
なんか適当に作って、タイ語(あるいは将来的には中国語なども)も含めら
れるように、適当に修正する必要があるかとおもいます。ただし、その場
合は現状の nmz_wakati() は日本語に特化しているので、 
nmz_wakati_ja() などとする必要があるでしょう。

なお、実験した範囲では、nmz_strlower() などではとりあえずは問題な
さそうでした。むろん、きちんとチェックする必要はありますが。
--
馬場  肇 ( Hajime BABA )                  E-mail: hajime.baba@xxxxxxxxx
国立天文台 天文学データ解析計算センター
--