Namazu-users-ja(旧)


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

Re: はじめましてタイからの参加です。



 From: "HASEGAWA" <mailmag@xxxxxxxxxx>
 Subject: [namazu-users-ja] はじめましてタイからの参加です。
 Date: Tue, 14 Aug 2001 11:27:42 +0700

 > さて、今回このMLに参加したのはタイ語の処理についてちょっと行き
 > 詰まってしまったからです。仕事がら私はタイ語を扱うことが多いの
 > ですが実はNamazuではタイ語が通らないのです。このMLの過去
 > の記事を参照してタイ語の分かち書きのフィルター等を導入してみた
 > のですが分かち書きはうまく行きますがインデックスが正常に生成さ
 > れません。

現在の mknmz は、分かち書きは日本語のことしか考えていないからです。

とりあえず、以下の変更を行うことで、タイ語の分かち書きをしつつイン
デックスを作成する(作成しているらしい)ことには成功しました。こちら
で実験したのは Linux 環境ですが、Windows 環境でも動くはずです。


まず、mknmz に以下の変更を加えます。C:\namazu\bin\mknmz だとおもい
ます。Windows 版の場合、行数は多少変わっているかも知れません。

--- mknmz.orig	Wed Feb  2 19:44:15 2000
+++ mknmz	Wed Aug 15 23:04:30 2001
@@ -2182,6 +2182,9 @@
     if (util::islang("ja")) {
        wakati::wakatize_japanese($contref) if $kanji;
     }
+    if (util::islang("th")) {
+       wakati::wakatize_thai($contref);
+    }

     # Remove all symbols when -K option is specified.
     $$contref =~ tr/\xa1-\xfea-z0-9/   /c if $var::Opt{'nosymbol'};


次いで、pl/wakati.pl に以下の変更を加えます。
C:\namazu\share\namazu\pl\wakati.pl だとおもいます。

--- wakati.pl.orig	Wed Feb  2 19:44:15 2000
+++ wakati.pl	Wed Aug 15 23:04:30 2001
@@ -95,4 +95,31 @@
     return @tmp;
 }
 
+sub wakatize_thai ($) {
+    my ($content) = @_;
+    my $str = "";
+    my @tmp = ();
+
+    my $tmpfile = util::tmpnam("NMZ.wakati");
+    util::dprint(_("wakati: using ")."$conf::WAKATI\n");
+    # Don't use IPC::Open2 because it's not efficent.
+    {
+	my $fh_wakati = util::efopen("|$conf::WAKATI > $tmpfile");
+	print $fh_wakati $$content;
+    }
+    {
+	my $fh_wakati = util::efopen($tmpfile);
+	@tmp = <$fh_wakati>;
+	chomp @tmp;
+	foreach my $tmp (@tmp) {
+	    $tmp =~ s/<WBR>/ /ig;
+	}
+    }
+    unlink $tmpfile;
+
+    $$content = join("\n", @tmp);
+
+    util::dprint(_("-- wakatized content --\n")."$$content\n");
+}
+
 1;


そうしておいて、mknmzrc (C:\namazu\etc\mknmzrc) で

$WAKATI = "cttex -w";

と設定して、また、環境変数 LANG を th にします。LANG は 
C:\autoexec.bat で ja_JP.SJIS と設定されているはずですので、DOS 窓
で set LANG th とすればOKです。

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


なお、この方法では、日本語のファイルとタイ語のファイルとは同時にイ
ンデックスできません。ましてや、日本語とタイ語の混ざった文章はイン
デックスできませんし、ファイル名やフォルダ名にはタイ語は用いること
ができません。あくまでも実験的なものということでご了承下さい。
--
馬場  肇 ( Hajime BABA )                  E-mail: hajime.baba@xxxxxxxxx
国立天文台 天文学データ解析計算センター
--