From 4edbe343c6ec9c0b6f34374b4a569c23acc2058f Mon Sep 17 00:00:00 2001 From: john Date: Mon, 13 Jan 2003 23:33:13 +0000 Subject: [PATCH] deletes content from the index... haven't quite figured out where to plug this in to producers.xml, the same code also needs to go in module=content&do=delete in order to be really thorough --- .../mircoders/producer/UnIndexingProducerNode.java | 140 +++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100755 source/mircoders/producer/UnIndexingProducerNode.java diff --git a/source/mircoders/producer/UnIndexingProducerNode.java b/source/mircoders/producer/UnIndexingProducerNode.java new file mode 100755 index 00000000..60b21b24 --- /dev/null +++ b/source/mircoders/producer/UnIndexingProducerNode.java @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, The Mir-coders gives permission to link + * the code of this program with the com.oreilly.servlet library, any library + * licensed under the Apache Software License, The Sun (tm) Java Advanced + * Imaging library (JAI), The Sun JIMI library (or with modified versions of + * the above that use the same license as the above), and distribute linked + * combinations including the two. You must obey the GNU General Public + * License in all respects for all of the code used other than the above + * mentioned libraries. If you modify this file, you may extend this exception + * to your version of the file, but you are not obligated to do so. If you do + * not wish to do so, delete this exception statement from your version. + */ + +package mircoders.producer; + +import java.util.*; +import java.io.*; + + +import org.apache.lucene.index.*; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; +import org.apache.lucene.store.FSDirectory; + +import freemarker.template.*; + + +import mir.util.*; +import mir.log.*; +import mir.producer.*; +//import mir.generator.*; +import mircoders.global.*; +import mircoders.localizer.*; +import mir.entity.*; +import mir.entity.adapter.*; +import mircoders.entity.*; +import mircoders.storage.*; +import mircoders.search.*; + + +public class UnIndexingProducerNode implements ProducerNode { + private String contentKey; + private String indexPath; + + + public UnIndexingProducerNode(String aContentKey, String pathToIndex) { + contentKey = aContentKey; + indexPath=pathToIndex; + } + + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { + IndexReader indexReader = null; + Object data; + Entity entity; + + long startTime; + long endTime; + + startTime = System.currentTimeMillis(); + + try { + data = ParameterExpander.findValueForKey( aValueMap, contentKey ); + + if (! (data instanceof EntityAdapter)) { + throw new ProducerFailure("UnIndexingProducerNode: value of '"+contentKey+"' is not an EntityAdapter, but an " + data.getClass().getName(), null); + } + + entity = ((EntityAdapter) data).getEntity(); + if (! (entity instanceof EntityContent)) { + throw new ProducerFailure("UnIndexingProducerNode: value of '"+contentKey+"' is not a content EntityAdapter, but a " + entity.getClass().getName() + " adapter", null); + } + aLogger.info("UnIndexing " + (String) entity.getValue("id") + " out of " + indexPath); + + indexReader = IndexReader.open(indexPath); + indexReader.delete(new Term("id",entity.getValue("id"))); + indexReader.close(); + + } + catch (Throwable t) { + aLogger.error("Error while unindexing content: " + t.getMessage()); + t.printStackTrace(new PrintWriter(new LoggerToWriterAdapter(aLogger, LoggerWrapper.DEBUG_MESSAGE))); + } + finally { + if (indexReader != null){ + try{ + indexReader.close(); + } + catch (Throwable t) { + aLogger.warn("Error while closing indexReader: " + t.getMessage()); + } + + } + + try{ + FSDirectory theIndexDir=FSDirectory.getDirectory(indexPath,false); + if (indexReader.isLocked(theIndexDir)){ + indexReader.unlock(theIndexDir); + } + } + catch (Throwable t) { + aLogger.warn("Error while unlocking index: " + t.getMessage()); + } + } + + + + + endTime = System.currentTimeMillis(); + + aLogger.info(" UnIndexTime: " + (endTime-startTime) + " ms
"); + } +} + + + + + + + + + + -- 2.11.0