既存の Lucene インデックスにファセットを追加する方法に少し困惑しています。
Lucene 3.1 を使用して作成された Lucene インデックス (ファセットなしで作成) があります。
ファセットに関する Lucene のドキュメントを調べたところ、ファセットを使用してインデックスをゼロから作成する方法が示されています。つまり、新しい LuceneDocument
オブジェクトを作成し、分類ツールを使用してそれにファセット情報 (カテゴリ) を追加してから、次のように記述します。そのドキュメントを Lucene インデックスに ( を使用して) 追加すると、ここで説明するように、IndexWriter
( を介して) タクソノミー インデックスに追加のデータが追加されます。TaxonomyWriter
ただし、私が望むのは、既存の Lucene インデックスに既に格納されているデータを使用し、そこから新しい Lucene インデックスを作成することです (分類インデックスと一緒に)。これには、元のインデックスとまったく同じデータとさまざまなカテゴリが含まれます。情報。
私の質問はより正確です:
次のように、元のインデックスからドキュメントを読み取り、その CategoryPath を作成してから、新しいインデックスに書き込むだけで十分ですか。
//get a document from original Lucene index:
Query query = queryParser.parse("*:*");
originalTopDocs = originalIndexSearcher.search(query,100);
Document originalDocument = originalIndexSearcher.doc(originalTopDocs.scoreDocs[1].doc)
//create categories for original document
CategoryDocumentBuilder categoryDocBuilder = new CategoryDocumentBuilder(taxonomyWriter);
categoryDocBuilder.setCategoryPaths(categoriesPaths);
//create new document from original document + categories:
Document originalDocumentWithCategories = categoryDocBuilder.build(originalDocument);
//write new document to new index:
newIndexWriter.write(originalDocumentWithCategories);
上記のコードは、元のインデックスに保存されていたのと同じドキュメントにインデックスを付けますが、カテゴリ データが追加されていますか? たとえば、元のドキュメントの保存されていないフィールドのデータは、新しく作成され、インデックスが作成されたドキュメントにも存在しますか?
また、この更新を行うためのより良い方法はありますか (おそらく新しいインデックスを作成しないでください)...