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";
 }