对于如何将构面添加到已经存在的 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);
上面的代码是否索引了与原始索引中存储的文档相同的文档,但添加了类别数据?例如,原始文档中未存储字段的数据是否仍会出现在新创建和索引的文档中?
还有没有更好的方法来进行此更新(可能不创建新索引)...