[Namazu-win32-users-ja 128] Re: SEARCH_FIELDの追加

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2004年 12月 8日 (水) 15:24:45 JST


寺西です。

Tetsuya Obayashi wrote:
> 
> 試行錯誤しながら、何とかインデックスを作成し、全文検索が出来るところまで
> はこぎつけたのですが、WordやExcelなどのMSオフィスドキュメント内のファイ
> ル->プロパティで閲覧できる、タイトル、サブタイトル、作成者、などのField
> を特定して検索するという点で、行き詰っております。
> 
> 最初に行ったのは、mknmzrc内の、$SEARCH_FIELDを下記の通り変更した結果、中
> 身がIndexを作成したファイルの数だけ改行のみが入っている、fieldインデック
> ス(NMZ.field.categoryなど)が作成されました。
> $SEARCH_FIELD ="keywords|title|comments|category|subject|from|date|uri|to|summary|size";

まずは Namazu のデフォルトの動作について解説します。
olemsword.pl 等では、

1. Title か Title が空の場合、Subject を $field->{'title'} に入れます。
2. Last Author か、Last Author が空の場合は Author を $field->{'author'}
   に入れます。
3. keywords を本体に入れます。

title は subject の別名で、author は from の別名になります。
このため、デフォルトの
$SEARCH_FIELD =
"message-id|subject|from|date|uri|newsgroups|to|summary|size";
の内容に従って、
NMZ.field.subject, NMZ.field.from にタイトル、著者の情報が入ります。

また、keywords は検索可能なはずです。

標準の状態で、通常の検索をおこなって、Keywords の中身が検索できている
でしょうか?
これができておれば、
$cfile->BuiltInDocumentProperties('keywords')->{Value};
で値の取り出しができていることになりますので、下記のソースのうち
怪しいのは後述の一箇所ぐらいです。

> そこで、まったく見当違いかもしれませんが、MS Wordドキュメントフィルタと
> 思われる、olemsword.pl内のgetPropertiesサブルーチンを下記の通り変更して
> みたのですが、結果は全く変わりませんでした。
...
>     my $keyword = $cfile->BuiltInDocumentProperties('Keywords')->{Value};

ここで設定しているので、

>     $keyword = $cfile->BuiltInDocumentProperties('Keywords')->{Value}
>         unless (defined $keyword);

この2行は不要です。

>     $fields->{'Keywords'} = codeconv::shiftjis_to_eucjp($keyword)
>         if (defined $keyword);

$fields->{'Keywords'} は $fields->{'keywords'} のように 
$SEARCH_FIELD と合わせておかないとダメだったかもしれません。
(大文字、小文字を区別する恐れがあります。)
他との整合性のためにも、ここは小文字で書いた方が安全でしょう。

$fields の中を小文字に変えて試してみてください。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-win32-users-ja メーリングリストの案内