2016-05-30 7 views
1

ドキュメント(.doc、.ppt、.pdfなど)を添付ファイルとしてインデックスに追加(コンテンツフィールドをBASE64コンテンツとして保存)してから、検索クエリとハイライト結果のファイルの内容フィールド。 インデックスに登録するときに、ファイルのサイズが大きくなるのはなぜですか?ドキュメントインデックスのサイズが元のサイズを超えています

たとえば、文書のインデックスが作成されるフォルダの合計サイズは30MBです。しかし、ヘッドプラグインはここで(同じフォルダからインデックス化されている)ファイルの数が同じ

のための127メガバイトを示していることは、私のマッピングスタイルです:

var response= client.CreateIndex(defaultIndex, c => c 
        .Mappings(m => m 
        .Map<Document>(mp => mp 
        .Properties(ps => ps 
         .String(s => s.Name(e => e.Title)) 
         .Attachment(s => s.Name(p => p.File) 
          .FileField(ff => ff.Name(f => f.File) 
          .TermVector(TermVectorOption.WithPositionsOffsetsPayloads) 
          .Analyzer("english") 
          .Store(true))))))); 

観察:私は正しいんだ場合は(いけない知っていますこれは) 手動IDを使用して文書を索引付けすると、サイズは約36MBですが、IDフィールドと索引を削除すると索引付けに時間がかかり、サイズが大きくなり、検索機能が正しく機能しません。それは、ファイルがインデックス化される方法に依存していますか?)

TIA

答えて

1

インデックスのサイズは、多くの異なる要因に依存します。フォルダの生のサイズは、索引の重さの程度を示す良い見積もりではありません。

ngramsトークナイザやトークンフィルタを備えたカスタムアナライザを使用している場合は、大文字テキストのフィールドにインデックスを付ける場合(あなたのケースのように見える) Luceneはmany different kind of filesを格納し、同じトークン(追加の位置とオフセットを持つ)が異なるファイルに存在する可能性があります。すべてがインデックスのサイズになります。

また、テスト中に何度もフォルダーを再インデックスすると、削除されたドキュメントが大量になるためインデックスサイズが大きくなります。

最後に、BASE64はinflate your contentに約3分の1であることがわかります。

+0

_テスト中にフォルダを何度も何度も再インデックスすると、削除されたドキュメントが大量になるためインデックスサイズが大きくなります._しかし、既存のインデックスを削除して新しいインデックスを作成しています毎回。それでこの効果はありますか?私は "英語"のアナライザを使用していますが、それ以外は何もありません。私が文書を索引付けしているので、テキストの内容は比較的高いです。 – ASN

+0

コンテンツを保存せずに、できるだけ簡単な設定で、位置やオフセットなしでアナライザーなしでドキュメントのインデックスを作成してください。あなたはいくらですか?次に、ストレージを追加して比較します。次に、アナライザを追加して比較します。次に、位置/オフセットを追加して比較します。インデックスの「追加設定」がインデックスサイズに加算されることがわかります。それは完全に正常です。 – Val

+0

Okok。しかし、私が驚いたのは、インデックス作成中のID生成の変化です。自動生成されたIDを使用してドキュメントにインデックスを付けると、カスタムIDでインデックスを作成するドキュメントよりも多くの領域が必要になりました。 (私は何かを逃している可能性がありますが、自動IDのを使用しているかもしれない)それはまたそれに依存するかどうかを知りたい。だからその投稿はなぜですか? – ASN

関連する問題