Author: brett
Date: Fri Dec  3 15:01:20 2010
New Revision: 1041846

URL: http://svn.apache.org/viewvc?rev=1041846&view=rev
Log:
[MRM-1439] improve indexing performance
Avoid re-reading the entire index each time an artifact is added, and instead 
search to see if it should be added or updated
Merged from: r1041829

Modified:
    
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java

Modified: 
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java?rev=1041846&r1=1041845&r2=1041846&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
 Fri Dec  3 15:01:20 2010
@@ -22,8 +22,10 @@ package org.apache.archiva.scheduler.ind
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TopDocs;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import 
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
@@ -120,23 +122,10 @@ public class ArchivaIndexingTaskExecutor
                     {
                         if ( indexingTask.getAction().equals( 
ArtifactIndexingTask.Action.ADD ) )
                         {
-                            boolean add = true;
-                            IndexReader r = context.getIndexReader();
-                            for ( int i = 0; i < r.numDocs(); i++ )
-                            {
-                                if ( !r.isDeleted( i ) )
-                                {
-                                    Document d = r.document( i );
-                                    String uinfo = d.get( ArtifactInfo.UINFO );
-                                    if ( 
ac.getArtifactInfo().getUinfo().equals( uinfo ) )
-                                    {
-                                        add = false;
-                                        break;
-                                    }
-                                }
-                            }
-
-                            if ( add )
+                            IndexSearcher s = context.getIndexSearcher();
+                            String uinfo = ac.getArtifactInfo().getUinfo();
+                            TopDocs d = s.search( new TermQuery( new Term( 
ArtifactInfo.UINFO, uinfo ) ), 1 );
+                            if ( d.totalHits == 0 )
                             {
                                 log.debug( "Adding artifact '" + 
ac.getArtifactInfo() + "' to index.." );
                                 indexerEngine.index( context, ac );


Reply via email to