The same situation is with adding mixin type to existing document. I have fixed it by marking document as dirty when indexing rule exists for one state and doesn't exist for another:

Index: LuceneIndexEditor.java
===================================================================
--- LuceneIndexEditor.java    (wersja 26)
+++ LuceneIndexEditor.java    (kopia robocza)
@@ -134,6 +134,21 @@
             NodeState current = after.exists() ? after : before;
             indexingRule = getDefinition().getApplicableIndexingRule(current);

+            if(after.exists() && before.exists()) {
+                IndexDefinition.IndexingRule afterIndexingRule = getDefinition().getApplicableIndexingRule(after); +                IndexDefinition.IndexingRule beforeIndexingRule = getDefinition().getApplicableIndexingRule(before);
+ if((afterIndexingRule!=null)^(beforeIndexingRule!=null)) {
+                    markDirty();
+                    if(indexingRule==null) {
+                        if(beforeIndexingRule!=null) {
+                            indexingRule=beforeIndexingRule;
+                        } else {
+                            indexingRule=afterIndexingRule;
+                        }
+                    }
+                }
+            }
+
             if (indexingRule != null) {
                 currentMatchers = indexingRule.getAggregate().createMatchers(this);
             }


On 18.11.2019 14:11, Piotr Tajduś wrote:
I have lucene index with rule pointing to mixin type. After 30 days documents loose this mixin type, however they are not removed from index. It looks like a bug to me. It doesn't cause direct problems, as mixin type is checked during query, but when I try to find some oldest documents, hundreds of thousands documents are index traversed until valid documents are found.


Best regards,

Piotr


Reply via email to