Update of /var/cvs/contributions/lucene/src/org/mmbase/module/lucene
In directory james.mmbase.org:/tmp/cvs-serv6094/src/org/mmbase/module/lucene

Modified Files:
        Indexer.java Lucene.java MMBaseIndexDefinition.java 
Log Message:
made release-strategies configurable


See also: 
http://cvs.mmbase.org/viewcvs/contributions/lucene/src/org/mmbase/module/lucene


Index: Indexer.java
===================================================================
RCS file: 
/var/cvs/contributions/lucene/src/org/mmbase/module/lucene/Indexer.java,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- Indexer.java        25 Feb 2008 14:10:01 -0000      1.57
+++ Indexer.java        19 Mar 2008 16:25:22 -0000      1.58
@@ -34,7 +34,7 @@
  *
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: Indexer.java,v 1.57 2008/02/25 14:10:01 michiel Exp $
+ * @version $Id: Indexer.java,v 1.58 2008/03/19 16:25:22 michiel Exp $
  **/
 public class Indexer {
 
@@ -487,11 +487,12 @@
                     log.debug("Indexed " + indexed + " documents");
                 }
             }
-            index(entry, document);
             if (Thread.currentThread().isInterrupted()) {
-                log.info("Interrupted");
+                log.service("Interrupted");
                 break;
             }
+            index(entry, document);
+
             lastIdentifier = newIdentifier;
         }
         if (document != null) {


Index: Lucene.java
===================================================================
RCS file: 
/var/cvs/contributions/lucene/src/org/mmbase/module/lucene/Lucene.java,v
retrieving revision 1.108
retrieving revision 1.109
diff -u -b -r1.108 -r1.109
--- Lucene.java 17 Mar 2008 08:58:20 -0000      1.108
+++ Lucene.java 19 Mar 2008 16:25:22 -0000      1.109
@@ -19,7 +19,7 @@
 import org.mmbase.bridge.*;
 import org.mmbase.bridge.util.Queries;
 import org.mmbase.storage.search.*;
-import org.mmbase.cache.CachePolicy;
+import org.mmbase.cache.*;
 import org.mmbase.module.ReloadableModule;
 
 import org.mmbase.core.event.*;
@@ -48,7 +48,7 @@
  *
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: Lucene.java,v 1.108 2008/03/17 08:58:20 andre Exp $
+ * @version $Id: Lucene.java,v 1.109 2008/03/19 16:25:22 michiel Exp $
  **/
 public class Lucene extends ReloadableModule implements NodeEventListener, 
RelationEventListener, IdEventListener {
 
@@ -154,8 +154,13 @@
 
     private List<String> configErrors = new ArrayList<String>();
     private Date configReadTime = new Date(0);
-    /* keeps track of startnodes to not reindex them */
-    private Set startNodes = new HashSet();
+    /**
+     * keeps track of startnodes to not reindex them
+     * @todo If a startnode changes itself you _might_ want to reindex.
+     */
+    private Set<String> startNodes = new HashSet<String>();
+
+    private ChainedReleaseStrategy defaultStrategy = new 
ChainedReleaseStrategy();
 
     /**
      * Returns whether an element has a certain attribute, either an 
unqualified attribute or an attribute that fits in the
@@ -805,6 +810,17 @@
             // do not cache these queries
             queryDefinition.query.setCachePolicy(CachePolicy.NEVER);
 
+            queryDefinition.getReleaseStrategy().removeAllStrategies();
+            
queryDefinition.getReleaseStrategy().fillFromXml(queryElement.getOwnerDocument().getDocumentElement());
+            if (queryDefinition.getReleaseStrategy().size() == 0) {
+                Iterator i = defaultStrategy.iterator();
+                while (i.hasNext()) {
+                    ReleaseStrategy rs = (ReleaseStrategy) i.next();
+                    
queryDefinition.getReleaseStrategy().addReleaseStrategy(rs);
+                }
+            }
+
+
             // MM: I think the follwing functionality should be present on 
MMBaseIndexDefinition itself. and not on Lucene.
             // And of course, the new event-mechanism must be used.
             if (!readOnly) {
@@ -854,13 +870,35 @@
         };
 
     protected void readConfiguration(String resource) {
+
+
+        defaultStrategy.removeAllStrategies();
+        List<URL> configList = 
ResourceLoader.getConfigurationRoot().getResourceList(resource);
+        log.service("Reading " + configList);
+        for(URL url : configList) {
+            try {
+                if (! url.openConnection().getDoInput()) continue;
+                Document config = ResourceLoader.getDocument(url, true, 
Lucene.class);
+                log.service("Reading lucene strategy configuration from " + 
url);
+                Element root = config.getDocumentElement();
+                if (defaultStrategy.size() == 0) {
+                    defaultStrategy.fillFromXml(root);
+                }
+            } catch (Exception e) {
+                log.warn(e);
+            }
+        }
+        if (defaultStrategy.size() == 0) {
+            defaultStrategy.addReleaseStrategy(new BasicReleaseStrategy());
+        }
+        log.service("Default release strategy " + defaultStrategy);
+
         indexerMap.clear();
         searcherMap.clear();
         disableIndexes.clear();
         defaultIndex = null;
         factory.clear();
-        List<URL> configList = 
ResourceLoader.getConfigurationRoot().getResourceList(resource);
-        log.service("Reading " + configList);
+
         for(URL url : configList) {
             try {
                 if (! url.openConnection().getDoInput()) continue;
@@ -869,6 +907,11 @@
                 Element root = config.getDocumentElement();
                 
disableIndexes.addAll(StringSplitter.split(root.getAttribute("disableIndexes")));
 
+
+                if (defaultStrategy.size() == 0) {
+                    defaultStrategy.fillFromXml(root);
+                }
+
                 NodeList extractorElements = 
root.getElementsByTagName("extractor");
                 for (int i = 0; i < extractorElements.getLength(); i++) {
                     Element extractorElement = (Element) 
extractorElements.item(i);


Index: MMBaseIndexDefinition.java
===================================================================
RCS file: 
/var/cvs/contributions/lucene/src/org/mmbase/module/lucene/MMBaseIndexDefinition.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- MMBaseIndexDefinition.java  17 Mar 2008 08:58:20 -0000      1.24
+++ MMBaseIndexDefinition.java  19 Mar 2008 16:25:22 -0000      1.25
@@ -26,7 +26,7 @@
  * fields can have extra attributes specific to Lucene searching.
  *
  * @author Pierre van Rooden
- * @version $Id: MMBaseIndexDefinition.java,v 1.24 2008/03/17 08:58:20 andre 
Exp $
+ * @version $Id: MMBaseIndexDefinition.java,v 1.25 2008/03/19 16:25:22 michiel 
Exp $
  **/
 class MMBaseIndexDefinition extends QueryDefinition implements IndexDefinition 
{
     static private final Logger log = 
Logging.getLoggerInstance(MMBaseIndexDefinition.class);
@@ -55,11 +55,17 @@
 
     private final Map<String, Float> boosts = new HashMap<String, Float>();
  
-    private final BasicReleaseStrategy releaseStrategy = new 
BasicReleaseStrategy();
+
+    private final ChainedReleaseStrategy releaseStrategy = new 
ChainedReleaseStrategy();
+
 
     MMBaseIndexDefinition() {
     }
 
+    public ChainedReleaseStrategy getReleaseStrategy() {
+        return releaseStrategy;
+    }
+
     public void setId(String i) {
         id = i;
     }
@@ -195,7 +201,7 @@
     }
 
     public String toString() {
-        return super.toString() + fields + "SUB[" + subQueries + "]";
+        return super.toString() + fields + "SUB[" + subQueries + "] 
releasestrategy: " + releaseStrategy;
     }
 
 }
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to