Index: modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java
===================================================================
--- modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java (revision 1206586)
+++ modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java (working copy)
@@ -233,7 +233,10 @@
* etc.
* NOTE: the instance this method returns will be closed upon calling
* to {@link #close()}.
- *
+ *
NOTE: internal docids of this index must not be altered.
+ * For that, categories are never deleted from the taxonomy index.
+ * In addition, the merge policy in effect must not merge segments out of order.
+ *
* @param directory
* the {@link Directory} on top of which an {@link IndexWriter}
* should be opened.
@@ -245,10 +248,20 @@
// Make sure we use a MergePolicy which merges segments in-order and thus
// keeps the doc IDs ordered as well (this is crucial for the taxonomy
// index).
- IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40,
+ IndexWriterConfig config = createIndexWriterConfig(openMode);
+ return new IndexWriter(directory, config);
+ }
+
+ /**
+ * Create the {@link IndexWriterConfig} that would be used for opening the internal index writer.
+ *
The merge policy in effect must not merge segments out of order. See
+ * comment in {@link #openIndexWriter(Directory, OpenMode) openIndexWriter()} for the logic behind this.
+ * @param openMode see {@link OpenMode}
+ */
+ protected IndexWriterConfig createIndexWriterConfig(OpenMode openMode) {
+ return new IndexWriterConfig(Version.LUCENE_40,
new KeywordAnalyzer()).setOpenMode(openMode).setMergePolicy(
new LogByteSizeMergePolicy());
- return new IndexWriter(directory, config);
}
// Currently overridden by a unit test that verifies that every index we open