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

Tetsuya Obayashi tetsu @ arcadia-ent.com
2004年 12月 10日 (金) 05:44:58 JST


寺西さん

ご連絡ありがとうございます。

On Thu, 09 Dec 2004 14:06:40 +0900
Tadamasa Teranishi <yw3t-trns @ asahi-net.or.jp> wrote:

TT> 段階を踏んで確認していきましょう。上記の部分を以下のように文字列を
TT> 決めうちで入れて、試してみましょう。
TT> 
TT> $fields->{'category'} = "category";
TT> $fields->{'comments'} = "comments";
TT> 
TT> この時、NMZ.field.category には全ての行で category が、
TT> NMZ.field.comments には全ての行で comments が入るはずです。
TT> ご確認ください。これがもしそうなっていないのなら、その原因を
TT> 突き止める必要があります。(全ての行と書いていますが、処理した文書
TT> ファイルが全て Word の場合です。Word 以外の文書は空行になります。)

試験結果としては、NMZ.field.category, NMZ.field.commentsに、それぞれ、
categoryとcommentsの文字がword文書の数だけ出力されておりました。

と言う事は、olemswords.plからNMZ.field.*への書き込みは出来ていると言う事
ですね。

TT> 次に
TT> 
TT> my $category = $cfile->BuiltInDocumentProperties('Category')->{Value};
TT> if (defined $category) {
TT>     $fields->{'category'} = "category";
TT> } else {
TT>     $fields->{'category'} = "none";
TT> }
TT> 
TT> my $comments = $cfile->BuiltInDocumentProperties('Comments')->{Value};
TT> if (defined $comments) {
TT>     $fields->{'comments'} = "comments";
TT> } else {
TT>     $fields->{'comments'} = "none";
TT> }
TT> 
TT> で試してみましょう。
TT> NMZ.field.category の全ての行が category になっていれば、値はともかく
TT> 何か取り出せていることになります。none になれば、取り出せていない
TT> ことになります。
TT> NMZ.field.comments も同様です。

この試験結果は、NMZ.field.commentsには、commentsの文字が出力されたのです
が、NMZ.field.categoryには残念ながら、noneの文字が出力されておりました。

そこで、私のソースと照らし合わせてみて、

my $comments = $cfile->BuiltInDocumentProperties('comments')->{Value};
     $fields->{'comments'} = codeconv::shiftjis_to_eucjp($comments)
         if (defined $comments);
を、

my $comments = $cfile->BuiltInDocumentProperties("Comments")->{Value};
     $fields->{'comments'} = codeconv::shiftjis_to_eucjp($comments)
         if (defined $comments);

と変更してみたところ、commentsがNMZ.field.commentsに出力されていました!

ですが、Categoryに付いては、
my $category = $cfile->BuiltInDocumentProperties('Category')->{Value};
if (defined $category) {
    $fields->{'category'} = "category";
} else {
    $fields->{'category'} = "none";
}
を
my $category = $cfile->BuiltInDocumentProperties('category')->{Value};
my $category = $cfile->BuiltInDocumentProperties("Category")->{Value};
my $category = $cfile->BuiltInDocumentProperties("category")->{Value};
で試してみましたが、全てnoneが出力されていました。

やはり寺西さんがおっしゃったように、categoryは別グループに属しているので
取り出せないのでしょうか。。。

TT> > VBAのBuiltInDocumentPropertiesを使用して、Title, Subject, Author,
TT> > Keywords, Comments, Categoryのプロパティに書き込む事は出来ていますので、
TT> > 取り出す事も出来ているのではないかと思っております。
TT> 
TT> VBA で書き込みことができているのなら、VBA で読み出すことも簡単に
TT> できるかと思います。
TT> 一度、VBA で読み出せるかどうか確認してみてください。
TT> 読み出せるなら、Namazu のフィールド検索に使えるようになるとは
TT> 思います。

VBAでの読み出しを確認してみましたが、
Private Sub Document_Close()
BuiltInDocumentProperties("Title") = frmPropCheck.txtTitle.Text
BuiltInDocumentProperties("Author") = frmPropCheck.txtAuthor.Text
BuiltInDocumentProperties("Subject") = frmPropCheck.txtSubject.Text
BuiltInDocumentProperties("Category") = frmPropCheck.txtCategory.Text
BuiltInDocumentProperties("Keywords") = frmPropCheck.txtKeyword.Text
BuiltInDocumentProperties("Comments") = frmPropCheck.txtComment.Text
frmPropCheck.Show VBA.FormShowConstants.vbModal
End Sub
このソースで、やはり全て上手く取り出せていました。(別途frmPropCheckが必
要ですが。)






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