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

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2004年 12月 9日 (木) 12:04:59 JST


寺西です。

Tetsuya Obayashi wrote:
> 
> TT> まずは Namazu のデフォルトの動作について解説します。
> TT> olemsword.pl 等では、
> TT>
> TT> 1. Title か Title が空の場合、Subject を $field->{'title'} に入れます。
> TT> 2. Last Author か、Last Author が空の場合は Author を $field->{'author'}
> TT>    に入れます。

$field は $fields の間違い。訂正します。

> TT> 3. keywords を本体に入れます。
> 
> keywordsを本体(index本体でしょうか?)を入れるのは、olemswords.plでしょ
> うか。それとも、mknmzでしょうか。

olemsword.pl です。該当部分は

    my $keyword =
$cfile->BuiltInDocumentProperties('keywords')->{Value};
    $keyword = codeconv::shiftjis_to_eucjp($keyword);
    $weight = $conf::Weight{'metakey'};
    $$weighted_str .= "\x7f$weight\x7f$keyword\x7f/$weight\x7f\n";

です。

> 私の理解では、mknmz内のsub put_field_indexでNMZ.fields.*にデータを格納し
> ているように思えます。(これも見当違いかもしれませんが。)

それは $fields に入れたものに限ります。上記の場合は、title, author は
そうですが、keywords は $fields->{'keywords'} に入れているわけではない
からです。
もっとも、これはあくまでもデフォルトの動作の話です。大林さんのソース
は更に手を加えているので、事情が異なります。
 
> TT> また、keywords は検索可能なはずです。
> TT>
> TT> 標準の状態で、通常の検索をおこなって、Keywords の中身が検索できている
> TT> でしょうか?
> 
> keywordsの抽出は、出来ております。言葉足らずで失礼いたしました。

ということは $cfile->BuiltInDocumentProperties('keywords')->{Value};
で値が取り出せているものと思います。
これを漢字コードの変換などして $fields->{'keywords'} に入れて、
$SEARCH_FIELD に keywords が入っていれば、NMZ.field.keywords に書き出
されると思います。

それでも改行のみのファイルになりますか?
 
> しかし、デフォルトのままですので、フィールド指定の検索で+keywords:と検索
> しても結果は表示されない状態です。(NMZ.field.keywordに何も格納されてい
> ない為)

デフォルトでは $fields->{'keywords'} には入れていませんし、$SEARCH_FIELD
に keywords は入っていませんので、フィールド検索には使えません。

フィールド検索に使おうと思えば、大林さんのソースのように書き換える
必要があります。
 
> Search_Fieldに関して言えば、フィールドの削除は出来ても、追加は出来ないと
> 言う事になるのでしょうか。

いえ。追加できます。
 
> TT> $fields->{'Keywords'} は $fields->{'keywords'} のように
> TT> $SEARCH_FIELD と合わせておかないとダメだったかもしれません。
> TT> (大文字、小文字を区別する恐れがあります。)
> TT> 他との整合性のためにも、ここは小文字で書いた方が安全でしょう。
> TT>
> TT> $fields の中を小文字に変えて試してみてください。
> 
> 上述の通り、keywordsに関しては、デフォルトでの動作は出来ております。ただ
> この部分を少し応用できれば、仮にolemsword.plなどでデータが抽出出来ている
> と仮定すると、categoryやcommentsも、MNZ.field.*へ出力出来るような気がす
> るのですが、やはり難しいのでしょうか。

で、実際 $fields の中を小文字に変えて試されましたか?

まずは keywords がフィールド検索できるようにするのが先です。
これは問題なく取り出せるはずですので、これをフィールド検索できる
ように改造ができないと、category や comments の応用は難しいでしょう。

次に BuiltInDocumentProperties で category や comments の中身が
取り出せるかどうかについてですが、Title, Subject, Author, Keywords, 
Comments ... 等は同じグループなので多分問題ありませんが、Category
は別のグループに属しているので、もしかすると取り出せないかもしれ
ません。
(BuiltInDocumentProperties は、Word の VBA の 
BuiltInDocumentProperties そのものですので、VBA で普通に取り出せて
いるなら問題ありません。)
-- 
=====================================================================
寺西 忠勝(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 メーリングリストの案内