Author: sdeboer
Date: 2009-11-26 14:28:20 +0100 (Thu, 26 Nov 2009)
New Revision: 39976

Modified:
   mmbase/trunk/contributions/lucene/src/main/config/modules/lucene.xml
   
mmbase/trunk/contributions/lucene/src/main/java/org/mmbase/module/lucene/Lucene.java
Log:
added option to disable incremental index updates


Modified: mmbase/trunk/contributions/lucene/src/main/config/modules/lucene.xml
===================================================================
--- mmbase/trunk/contributions/lucene/src/main/config/modules/lucene.xml        
2009-11-26 12:41:01 UTC (rev 39975)
+++ mmbase/trunk/contributions/lucene/src/main/config/modules/lucene.xml        
2009-11-26 13:28:20 UTC (rev 39976)
@@ -32,6 +32,8 @@
     -->
 
     <property name="indexpath">$BINARYFILEBASEPATH/lucene/$DATABASE</property>
+
+    <property name="incrementalupdates">true</property>
   </properties>
 
 </module>

Modified: 
mmbase/trunk/contributions/lucene/src/main/java/org/mmbase/module/lucene/Lucene.java
===================================================================
--- 
mmbase/trunk/contributions/lucene/src/main/java/org/mmbase/module/lucene/Lucene.java
        2009-11-26 12:41:01 UTC (rev 39975)
+++ 
mmbase/trunk/contributions/lucene/src/main/java/org/mmbase/module/lucene/Lucene.java
        2009-11-26 13:28:20 UTC (rev 39976)
@@ -152,6 +152,7 @@
     private final Map<String, Indexer>  indexerMap    = new 
ConcurrentHashMap<String, Indexer>();
     private final Map<String, Searcher> searcherMap   = new 
ConcurrentHashMap<String, Searcher>();
     private boolean readOnly = false;
+    private boolean incrementalUpdates = true;
     private String master; // If readonly, the machine name of the mmbase 
which is responsible for the index
 
     private long initialWaitTime = INITIAL_WAIT_TIME;
@@ -759,8 +760,10 @@
 
                     factory = ContentExtractor.getInstance();
 
+                    String incrementalUpdatesSetting = 
getInitParameter("incrementalupdates");
+                    incrementalUpdates = 
"true".equals(incrementalUpdatesSetting);
+                    log.info("Setting incremental index updates to " + 
incrementalUpdates);
 
-
                     String readOnlySetting = getInitParameter("readonly");
                     while (readOnlySetting != null && 
readOnlySetting.startsWith("system:")) {
                         try {
@@ -1134,65 +1137,71 @@
 
 
     public void notify(NodeEvent event) {
-        if (log.isDebugEnabled()) {
-            log.debug("Received node event: " + event +  
Logging.stackTrace(6));
-        }
-        if (scheduler != null) {
-            switch(event.getType()) {
-            case Event.TYPE_NEW:
-                org.mmbase.bridge.Node node = 
getCloud().getNode(event.getNodeNumber());
-                if (! node.isRelation()) {
-                    scheduler.newIndex("" + event.getNodeNumber(), 
MMBaseIndexDefinition.class);
+        if (incrementalUpdates) {
+            if (log.isDebugEnabled()) {
+                log.debug("Received node event: " + event +  
Logging.stackTrace(6));
+            }
+            if (scheduler != null) {
+                switch(event.getType()) {
+                case Event.TYPE_NEW:
+                    org.mmbase.bridge.Node node = 
getCloud().getNode(event.getNodeNumber());
+                    if (! node.isRelation()) {
+                        scheduler.newIndex("" + event.getNodeNumber(), 
MMBaseIndexDefinition.class);
+                    }
+                    break;
+                case Event.TYPE_CHANGE:
+                    if (event.getChangedFields().size() > 0) {
+                        scheduler.updateIndex("" + event.getNodeNumber(), 
MMBaseIndexDefinition.class);
+                    } else {
+                        // I don't know why the event was issued in the first 
place, but don't make it
+                        // worse.
+                    }
+                    break;
+                case Event.TYPE_DELETE:
+                    scheduler.deleteIndex("" + event.getNodeNumber(), 
MMBaseIndexDefinition.class);
+                    break;
                 }
-                break;
-            case Event.TYPE_CHANGE:
-                if (event.getChangedFields().size() > 0) {
-                    scheduler.updateIndex("" + event.getNodeNumber(), 
MMBaseIndexDefinition.class);
-                } else {
-                    // I don't know why the event was issued in the first 
place, but don't make it
-                    // worse.
-                }
-                break;
-            case Event.TYPE_DELETE:
-                scheduler.deleteIndex("" + event.getNodeNumber(), 
MMBaseIndexDefinition.class);
-                break;
             }
         }
     }
     public void notify(RelationEvent event) {
-        if (log.isDebugEnabled()) {
-            log.debug("Received relation event: " + event + 
Logging.stackTrace(6));
-        }
-        if (scheduler != null) {
-            switch(event.getType()) {
-            case Event.TYPE_NEW:
-                //scheduler.newIndex("" + event.getRelationSourceNumber(), 
MMBaseIndexDefinition.class);
-                if (!startNodes.contains("" + 
event.getRelationDestinationNumber())) {
-                    scheduler.updateIndex("" + 
event.getRelationDestinationNumber(), MMBaseIndexDefinition.class);
+        if (incrementalUpdates) {
+            if (log.isDebugEnabled()) {
+                log.debug("Received relation event: " + event + 
Logging.stackTrace(6));
+            }
+            if (scheduler != null) {
+                switch(event.getType()) {
+                case Event.TYPE_NEW:
+                    //scheduler.newIndex("" + event.getRelationSourceNumber(), 
MMBaseIndexDefinition.class);
+                    if (!startNodes.contains("" + 
event.getRelationDestinationNumber())) {
+                        scheduler.updateIndex("" + 
event.getRelationDestinationNumber(), MMBaseIndexDefinition.class);
+                    }
+                    break;
+                case Event.TYPE_CHANGE:
+                case Event.TYPE_DELETE:
+                    if (!startNodes.contains("" + 
event.getRelationSourceNumber())) {
+                        scheduler.updateIndex("" + 
event.getRelationSourceNumber(), MMBaseIndexDefinition.class);
+                    }
+                    if (!startNodes.contains("" + 
event.getRelationDestinationNumber())) {
+                        scheduler.updateIndex("" + 
event.getRelationDestinationNumber(), MMBaseIndexDefinition.class);
+                    }
+                    break;
                 }
-                break;
-            case Event.TYPE_CHANGE:
-            case Event.TYPE_DELETE:
-                if (!startNodes.contains("" + 
event.getRelationSourceNumber())) {
-                    scheduler.updateIndex("" + 
event.getRelationSourceNumber(), MMBaseIndexDefinition.class);
-                }
-                if (!startNodes.contains("" + 
event.getRelationDestinationNumber())) {
-                    scheduler.updateIndex("" + 
event.getRelationDestinationNumber(), MMBaseIndexDefinition.class);
-                }
-                break;
             }
         }
     }
+
     public void notify(IdEvent event) {
-        if (scheduler != null) {
-            switch(event.getType()) {
-            case Event.TYPE_DELETE:
-                scheduler.deleteIndex(event.getId(), 
JdbcIndexDefinition.class);
-                break;
-            default:
-                scheduler.updateIndex(event.getId(), 
JdbcIndexDefinition.class);
-                break;
-
+        if (incrementalUpdates) {
+            if (scheduler != null) {
+                switch(event.getType()) {
+                case Event.TYPE_DELETE:
+                    scheduler.deleteIndex(event.getId(), 
JdbcIndexDefinition.class);
+                    break;
+                default:
+                    scheduler.updateIndex(event.getId(), 
JdbcIndexDefinition.class);
+                    break;
+                }
             }
         }
     }

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to