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