2019年6月1日土曜日

ZIPファイルも全文検索にヒットしました。ところが...

先日のノーツコンソーシアムの「ザ・ノーツ研究会」では、V10の新機能について検証するというテーマで、各チームに分かれ取り組みました。

そこで私が検証に取り組んだ機能が成功しないまま時間切れとなり、少々悔しい思いをしました。

そこで今回は、自宅で再検証した結果について書こうと思います。

成功しなかった機能とは、
zipファイルが全文検索できる
というものです。

ところで Notes/Domino の V10 で変わったことのひとつに、全文索引に添付ファイルを含める際に使われる、添付ファイルからテキストを抽出する仕組み(Conversion Filter)があります。

9.0.1 までは Conversion Filter に KeyView を使用していましたが、V10 ではこれが使えなくなりました。
KeyView に代わる Conversion Filter として V10 では Apache Tika 1.18 が使用されます。

余談ですが、世の中の文書検索システムで用いられている Conversion Filter (Converter) にはいろいろあるようです。
  • KeyView (HP/Autonomy)
  • Apache Tika (Open Source)
  • Outside In (Oracle)
  • IFilter (Microsoft)
などなど

さて、オンラインヘルプには Tika は .zip や .tar といったコンテナファイルを含むさまざまな形式を検索する、とあります。


Conversion Filter を使用して添付ファイル内のテキストを検索するには、全文索引を作成する画面でオプション「添付ファイルを索引する」を有効にしたうえで、さらに「詳細検索」を選択します。
英語版では "Using conversion filters on supported files" を選択します

今回検索のテストに使用したデータベースには、本文が異なる3つの文書を登録しています。
1) 文字列をリッチテキストフィールドに直書き
2) 1の文字列を転記した、UTF-8でエンコードしたテキストファイル
3) 2のファイルが入った .zip ファイル
全文検索前の状態

まずは Domino の設定を何も変更せず、検索バーへ "domino" とタイプして全文検索してみます。
設定なしで全文検索、.zip 以外の2文書がヒット

すると、1と2の文書がヒットしましたが .zip ファイルはヒットしません。

オンラインヘルプによると、デフォルトでは Tika 1.18 でサポートされているすべてのファイル形式のうち、次のものを除いて全文索引されているとのこと。
.au, .bqy, .cca, .dbd, .dll, .exe, .gif, .gz, .img, .jar, .jpg, .mov, .mp3,.mpg,
 .msi,.nsf, .ntf, .p7m, .p7s,.pag, .pdb, .png, .rar, .sys, .tar, .tif, .wav, .wpl, .z, .zip. 

.zip はサポートされてはいるものの、デフォルトでは全文索引に含まないファイル形式となっています。

こういった .zip などの「サポートされているがデフォルトで除かれているファイル形式」のうち *.zip と *.jar を手っ取り早く索引に含める場合、notes.ini に次のパラメータを追加します。
FT_USE_ATTACHMENT_WHITE_LIST=1
これを設定することにより、次のファイル形式を一度に全文索引に含めることが可能となります。
*.123,*.ami,*.ap,*.as,*.aw,*.dca,*.doc*,*.dwg,*.emf,*.emz,*.fff,*.fft,*.flg,*
.fm,*.htm*,*.hwp,*.jar,*.jtd,*.jtt,*.lwp,*.mime,*.oas,*.odp,*.ods,*.odt,*.pdf*,*.pic,
*.ppt*,*.pst,*.qpw,*.r13,*.r14,*.rtf,*.sam,*.shw,*.swp,*.vsd*,*.wk4,*.wks,*.wmf,*.wp*,
*.wri,*.xlr,*.xls*,*.xml,*.xy*",*.zip

今回は検索のテストに使用しているデータベースがサーバーにあるため、サーバーの notes.ini へ追加しました。
※notes.ini へ追加した後(要否は不明ですが)念のためDominoを再起動しています

次のコマンドを投入して全文索引を(更新ではなく)再構築します。

load updall -X FTSearchTest.nsf

2019/05/29 11:52:04   Index update process started:  -X FTSearchTest.nsf
2019/05/29 11:52:04   Updating views in C:\IBM\Domino\data\FTSearchTest.nsf
2019/05/29 11:52:04   Full text indexing documents in C:\IBM\Domino\data\FTSearchTest.nsf
2019/05/29 11:52:05   3 documents (12705 bytes) indexed in C:\IBM\Domino\data\FTSearchTest.nsf
2019/05/29 11:52:05   Index update process shutdown


では改めて検索バーに "domino" とタイプして検索します。

.zip ファイルを含む3件すべてが検索にヒットしました。
ひとまず「.zip ファイルの全文検索」の検証は大成功です。

研究会の検証時にうまく動かなかった原因は、おそらく notes.ini に追加したパラメータが反映していない状態だったのではないか...と推測しています。
今回の検証では、パラメータを変更したあとに Domino を再起動しました。


ところで日本語の検索はどうなのでしょうか。

試しに"エコシステム" とタイプして検索します。
.txt の日本語はヒットしない

今度は .zip ファイルがヒットして .txt ファイルがヒットしなくなりました。

そう言えば先に示した「FT_USE_ATTACHMENT_WHITE_LIST=1 を追加すると検索可能になるファイル形式」のリストに .txt が無いことが少々気になります。

とは言え、英語が検索できるということは .txt ファイルもきちんと索引されていると理解してよいと思うのですが、日本語が検索できないとはこれ如何に。

そこで、さらに次のファイルを追加して、全文索引を再構築してみました。
4) 2のテキストファイルの内容をPDFへ出力したもの
5) 4のファイルが入った .zip ファイル
pdfファイルとそれをzipファイルに入れたものを追加

この状態で日本語で検索すると .pdf ファイルはヒットします。
.pdf の日本語はヒットしたが .txt がヒットしない

念のため Notes 9.0.1 FP9 でも .txt の全文検索を試してみたところ、(当然 .zip ファイルはヒットしませんが) .txt にある日本語と英語のどちらも検索にヒットしました。どうやら V10 になって(Conversion Filter が変わって)からの不具合のようです。

では、V10 の notes.ini に追加したパラメータを削除してみるとどうでしょうか。全文索引を再構築して検索してみます。
notes.ini パラメータ無しでは .txt の日本語がヒットする

少々混乱してきましたので、整理してみます。
表の最も右にある列の上から4行目に注目してください。

まずは Notes 9.0.1 FP9 のローカルにあるデータベースでの結果です。 .txt ファイルの日本語は検索にヒットします。
Notes 9.0.1 FP9 の全文検索結果

続いてコミュニティー版 Domino 10.0.1 FP1 で notes.ini パラメータを追加していない状態での結果です。こちらは Notes 9.0.1 FP9 の結果と同じです。
Domino 10.0.1 FP1 notes.ini パラメータ無し

最後にコミュニティー版 Domino 10.0.1 FP1 で notes.ini パラメータ「FT_USE_ATTACHMENT_WHITE_LIST=1」を追加した状態での結果です。
Domino 10.0.1 FP1 notes.ini パラメータ追加
Domino 10.0.1 FP1 では .zip ファイルの全文検索を選択すれば .txt の日本語検索をあきらめなければならないのでしょうか...


ちなみに、notes.ini へ次のパラメータを追加すると Conversion Filter である Tika がフィルタリングするファイル名をコンソールに表示することができます。
DEBUG_FILTER_TIMING=1
DEBUG_TIKA=1

FT_USE_ATTACHMENT_WHITE_LIST=1」を追加する前は、.txt ファイルと .pdf ファイルがフィルタリングされていました。

load updall -X FTSearchTest.nsf

Index update process started: -X FTSearchTest.nsf
Updating views in C:\IBM\Domino\data\FTSearchTest.nsf
Full text indexing documents in C:\IBM\Domino\data\FTSearchTest.nsf
Tika upload and response took 31 msecs Filtering Attachment 'Sample.txt' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2294), sent size = 3678, returned size = 3706
Tika Attachment Filtering - took 31 msecs Filtering Attachment 'Sample.txt' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2294), size = 3678, occurrences = 1103
Tika upload and response took 203 msecs Filtering Attachment 'Sample.pdf' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2322), sent size = 101058, returned size = 3594
Tika Attachment Filtering - took 203 msecs Filtering Attachment 'Sample.pdf' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2322), size = 101058, occurrences = 1096
5 documents (11159 bytes) indexed in C:\IBM\Domino\data\FTSearchTest.nsf
Index update process shutdown

FT_USE_ATTACHMENT_WHITE_LIST=1」を追加すると、.zip ファイルがフィルタリングされるようになりましたが、.txt がフィルタリングされなくなりました。

load updall -X FTSearchTest.nsf

Index update process started: -X FTSearchTest.nsf
Updating views in C:\IBM\Domino\data\FTSearchTest.nsf
Full text indexing documents in C:\IBM\Domino\data\FTSearchTest.nsf
Tika upload and response took 47 msecs Filtering Attachment 'Sample.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2302), sent size = 2078, returned size = 3707
Tika Attachment Filtering - took 47 msecs Filtering Attachment 'Sample.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2302), size = 2078, occurrences = 1106
Tika upload and response took 78 msecs Filtering Attachment 'Sample.pdf' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2322), sent size = 101058, returned size = 3594
Tika Attachment Filtering - took 78 msecs Filtering Attachment 'Sample.pdf' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2322), size = 101058, occurrences = 1096
Tika upload and response took 62 msecs Filtering Attachment 'Sample_pdf.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2326), sent size = 94317, returned size = 3652
Tika Attachment Filtering - took 62 msecs Filtering Attachment 'Sample_pdf.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2326), size = 94317, occurrences = 1105
5 documents (20081 bytes) indexed in C:\IBM\Domino\data\FTSearchTest.nsf
Index update process shutdown

このことから、日本語は .txt ファイルがフィルタリングされれば検索できるようになることがわかります。

もし、.txt ファイルを Tika がフィルタリングする対象として個別に設定することができれば、日本語がヒットするのではないでしょうか。

オンラインヘルプには、フィルタリングするファイル形式を個別に指定する notes.ini パラメータの記載もあります。ただし個別に追加する場合、先に追加した notes.ini パラメータ「FT_USE_ATTACHMENT_WHITE_LIST=1」の代わりに「FT_USE_MY_ATTACHMENT_WHITE_LIST=1」を設定するようです。
FT_USE_MY_ATTACHMENT_WHITE_LIST=1 FT_INDEX_FILTER_ATTACHMENT_TYPES=*.txt,*.pdf,*.zip


では、先に追加したパラメータFT_USE_ATTACHMENT_WHITE_LIST=1を削除して上の2行を追加し、全文索引を再構築してみます。
load updall -X FTSearchTest.nsf

Index update process started:  -X FTSearchTest.nsf
Updating views in C:\IBM\Domino\data\FTSearchTest.nsf
Full text indexing documents in C:\IBM\Domino\data\FTSearchTest.nsf
Tika upload and response took 31 msecs Filtering Attachment 'Sample.txt' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2294), sent size = 3678, returned size = 3706
Tika Attachment Filtering - took 46 msecs Filtering Attachment 'Sample.txt' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2294), size = 3678, occurrences = 1103
Tika upload and response took 15 msecs Filtering Attachment 'Sample.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2302), sent size = 2078, returned size = 3707
Tika Attachment Filtering - took 15 msecs Filtering Attachment 'Sample.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2302), size = 2078, occurrences = 1106
Tika upload and response took 62 msecs Filtering Attachment 'Sample.pdf' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2322), sent size = 101058, returned size = 3594
Tika Attachment Filtering - took 62 msecs Filtering Attachment 'Sample.pdf' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2322), size = 101058, occurrences = 1096
Tika upload and response took 79 msecs Filtering Attachment 'Sample_pdf.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2326), sent size = 94317, returned size = 3652
Tika Attachment Filtering - took 79 msecs Filtering Attachment 'Sample_pdf.zip' in 'C:\IBM\Domino\data\FTSearchTest.nsf' (DocID = 2326), size = 94317, occurrences = 1105
5 documents (18510 bytes) indexed in C:\IBM\Domino\data\FTSearchTest.nsf
Index update process shutdown 

.txt ファイルもフィルタリングされたようですので、日本語で検索してみます。
フィルタ対象を個別指定後の日本語検索の結果


.txt ファイルにある日本語が全文検索にヒットするようになりました。

もし V10 にアップグレードした後に .txt ファイルがヒットしなくなった場合、ファイル形式を個別に指定する方法を試してみてはいかがでしょうか。

0 件のコメント:

コメントを投稿