You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/01/25 19:05:41 UTC
svn commit: r737555 - in /lucene/solr/trunk/contrib/dataimporthandler:
CHANGES.txt
src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
Author: shalin
Date: Sun Jan 25 18:05:41 2009
New Revision: 737555
URL: http://svn.apache.org/viewvc?rev=737555&view=rev
Log:
SOLR-801 -- Add support for configurable pre-import and post-import delete query per root-entity
Modified:
lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
Modified: lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt?rev=737555&r1=737554&r2=737555&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt Sun Jan 25 18:05:41 2009
@@ -50,6 +50,9 @@
10.SOLR-938: Add event listener API for import start and end.
(Kay Kay, Noble Paul via shalin)
+11.SOLR-801: Add support for configurable pre-import and post-import delete query per root-entity.
+ (Noble Paul via shalin)
+
Optimizations
----------------------
1. SOLR-846: Reduce memory consumption during delta import by removing keys when used
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java?rev=737555&r1=737554&r2=737555&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java Sun Jan 25 18:05:41 2009
@@ -315,8 +315,6 @@
setIndexStartTime(new Date());
try {
- if (requestParams.clean)
- writer.doDeleteAll();
docBuilder = new DocBuilder(this, writer, requestParams);
docBuilder.execute();
if (!requestParams.debug)
@@ -481,6 +479,9 @@
verbose = "true".equals(requestParams.get("verbose"))
|| "on".equals(requestParams.get("verbose"));
}
+ if (DELTA_IMPORT_CMD.equals(command)) {
+ clean = false;
+ }
if (requestParams.containsKey("commit"))
commit = Boolean.parseBoolean((String) requestParams.get("commit"));
if (requestParams.containsKey("start"))
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java?rev=737555&r1=737554&r2=737555&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java Sun Jan 25 18:05:41 2009
@@ -133,18 +133,32 @@
if (document.onImportStart != null) {
invokeEventListener(document.onImportStart);
}
-
+ AtomicBoolean fullCleanDone = new AtomicBoolean(false);
+ //we must not do a delete of *:* multiple times if there are multiple root entities to be run
for (DataConfig.Entity e : document.entities) {
if (entities != null && !entities.contains(e.name))
continue;
root = e;
+ String delQuery = e.allAttributes.get("preImportDeleteQuery");
+ if(delQuery == null) delQuery="*:*";
if (dataImporter.getStatus() == DataImporter.Status.RUNNING_DELTA_DUMP
&& dataImporter.getLastIndexTime() != null) {
+ cleanByQuery(delQuery , fullCleanDone);
doDelta();
-
+ delQuery = e.allAttributes.get("postImportDeleteQuery");
+ if(delQuery != null) {
+ fullCleanDone.set(false);
+ cleanByQuery(delQuery, fullCleanDone);
+ }
} else {
+ cleanByQuery(delQuery, fullCleanDone);
doFullDump();
+ delQuery = e.allAttributes.get("postImportDeleteQuery");
+ if(delQuery != null) {
+ fullCleanDone.set(false);
+ cleanByQuery(delQuery, fullCleanDone);
+ }
}
statusMessages.remove(DataImporter.MSG.TOTAL_DOC_PROCESSED);
}
@@ -637,6 +651,18 @@
}
}
+ private void cleanByQuery(String delQuery, AtomicBoolean completeCleanDone) {
+ delQuery = getVariableResolver().replaceTokens(delQuery);
+ if (requestParameters.clean) {
+ if (delQuery == null && !completeCleanDone.get()) {
+ writer.deleteByQuery("*:*");
+ completeCleanDone.set(true);
+ } else {
+ writer.deleteByQuery(delQuery);
+ }
+ }
+ }
+
public static final String LAST_INDEX_TIME = "last_index_time";
public static final String INDEX_START_TIME = "index_start_time";
}