2015-10-05 5 views
5

Field.Store.YESの代わりにField.Store.NOを使用する環境について説明してください。私はLuceneにとって非常に新しいです。私は文書を作成しようとしています。私の基礎知識では、私はやっていますLucene Field.Store.YESとField.Store.NOとの比較

doc.add(new StringField(fieldNameA,fieldValueA,Field.Store.YES)); 
doc.add(new TextField(fieldNameB,fieldValueB,Field.Store.YES)); 

答えて

9

文書をLuceneに書くことができる2つの基本的な方法があります。

  • 索引 - フィールドが分​​析され、索引付けされ、検索可能です。
  • ストアド - フィールドのフルテキストが保存され、検索結果と共に返されます。

ドキュメントのインデックスが作成されていても保存されていない場合は、ドキュメントを検索できますが、検索結果は返されません。

検索にはluceneを使用しますが、SQLデータベース、ファイルシステムなどの文書/またはWebリソース。

フィールドが検索ツールの場合はフィールドを保存しないでくださいが、ユーザーには表示されません(たとえば、soundex /メタフォン、コンテンツフィールドの代替分析など)。

+0

返信いただきありがとうございます。正確さと完全性のために:もし私が元に戻したいのがdocumentIdなら、 'Field.Store.NO'を使うべきです:検索は知覚できる差異なしに行われますが、documentIdだけが返されます。また、 'fieldType.setIndexed(true)'を明示的に指定する必要がありますか?そして、ドキュメントIDは単に 'scoreDoc.doc'ですか? –

+0

パターンでは、documentIdは 'Store.YES'に設定された唯一のフィールドになることができます。フィールドが格納されているかどうかは、検索時に一致するドキュメントに影響を及ぼさない* [* IndexSearcher.doc'](https://lucene.apache.org/ core/5_3_0/core/index.html?org/apache/lucene/search/IndexSearcher.html))。識別子に何を使用するかについて、外部リソースから文書を識別しようとしている場合、私はLuceneの内部DocIDを使用しません。データベースのキー、ファイルシステムのパス、または状況に適したものを使用します。 – femtoRgon

+0

通常、文書を索引付けするかどうかを指定する必要はありません。 'TextField'は索引付けされ、分析され、' StringField'は索引付けされますが分析されず、 'StoredField'は索引付けされません)。 – femtoRgon

関連する問題