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