Author: cstamas Date: Thu Dec 2 16:20:38 2010 New Revision: 1041431 URL: http://svn.apache.org/viewvc?rev=1041431&view=rev Log: Changes related to new API changes in Lucene 2.9.x (and 3.0 etc).
Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java Thu Dec 2 16:20:38 2010 @@ -181,7 +181,7 @@ public class ArtifactContext Document doc = new Document(); // unique key - doc.add( new Field( ArtifactInfo.UINFO, getArtifactInfo().getUinfo(), Store.YES, Index.UN_TOKENIZED ) ); + doc.add( new Field( ArtifactInfo.UINFO, getArtifactInfo().getUinfo(), Store.YES, Index.NOT_ANALYZED ) ); doc.add( new Field( ArtifactInfo.LAST_MODIFIED, // Long.toString( System.currentTimeMillis() ), Store.YES, Index.NO ) ); Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java Thu Dec 2 16:20:38 2010 @@ -52,7 +52,7 @@ public class ArtifactInfoRecord * Unique groupId, artifactId, version, classifier, extension (or packaging). Stored, indexed untokenized */ public static final IndexerField FLD_UINFO = new IndexerField( NEXUS.UINFO, IndexerFieldVersion.V1, "u", - "Artifact UINFO (as keyword, stored)", Store.YES, Index.UN_TOKENIZED ); + "Artifact UINFO (as keyword, stored)", Store.YES, Index.NOT_ANALYZED ); /** * Del: contains UINFO to mark record as deleted (needed for incremental updates!). The original document IS Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultIteratorResultSet.java Thu Dec 2 16:20:38 2010 @@ -27,7 +27,6 @@ import java.util.List; import org.apache.lucene.analysis.CachingTokenFilter; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.document.Document; -import org.apache.lucene.search.Explanation; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; @@ -338,7 +337,11 @@ public class DefaultIteratorResultSet maxNumFragments = Math.max( 1, maxNumFragments ); // sanity check - TextFragment[] frag = highlighter.getBestTextFragments( tokenStream, text, false, maxNumFragments ); + TextFragment[] frag; + // Lucene 2.9.x + // try + // { + frag = highlighter.getBestTextFragments( tokenStream, text, false, maxNumFragments ); // Get text ArrayList<String> fragTexts = new ArrayList<String>( maxNumFragments ); @@ -352,6 +355,13 @@ public class DefaultIteratorResultSet } return fragTexts; + // } + // catch ( InvalidTokenOffsetsException e ) + // { + // // TODO: huh? Logging this? Or what? + // return Collections.emptyList(); + // } + } protected IndexingContext getIndexingContextForPointer( Document doc, int docPtr ) Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java Thu Dec 2 16:20:38 2010 @@ -38,6 +38,7 @@ import org.apache.lucene.store.Directory import org.apache.lucene.store.FSDirectory; import org.apache.maven.index.context.DefaultIndexingContext; import org.apache.maven.index.context.IndexCreator; +import org.apache.maven.index.context.IndexUtils; import org.apache.maven.index.context.IndexingContext; import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException; import org.codehaus.plexus.component.annotations.Component; @@ -269,7 +270,7 @@ public class DefaultNexusIndexer if ( update ) { - Directory.copy( context.getIndexDirectory(), directory, false ); + IndexUtils.copyDirectory( context.getIndexDirectory(), directory ); } tmpContext = new DefaultIndexingContext( context.getId() + "-tmp", // Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java Thu Dec 2 16:20:38 2010 @@ -418,6 +418,8 @@ public class DefaultQueryCreator int result = 0; + // Lucene 2.9 + // while ( ts.incrementToken() ) while ( ts.next() != null ) { result++; Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java Thu Dec 2 16:20:38 2010 @@ -151,7 +151,7 @@ public class DefaultIndexingContext this.indexDirectoryFile = indexDirectoryFile; - this.indexDirectory = FSDirectory.getDirectory( indexDirectoryFile ); + this.indexDirectory = FSDirectory.getDirectory( indexDirectoryFile ); prepareIndex( reclaimIndex ); } @@ -191,9 +191,9 @@ public class DefaultIndexingContext try { // unlock the dir forcibly - if ( IndexReader.isLocked( indexDirectory ) ) + if ( IndexWriter.isLocked( indexDirectory ) ) { - IndexReader.unlock( indexDirectory ); + IndexWriter.unlock( indexDirectory ); } checkAndUpdateIndexDescriptor( reclaimIndex ); @@ -238,9 +238,9 @@ public class DefaultIndexingContext indexWriter = null; // unlock the dir forcibly - if ( IndexReader.isLocked( indexDirectory ) ) + if ( IndexWriter.isLocked( indexDirectory ) ) { - IndexReader.unlock( indexDirectory ); + IndexWriter.unlock( indexDirectory ); } indexDirectory.close(); @@ -313,7 +313,7 @@ public class DefaultIndexingContext { Document hdr = new Document(); - hdr.add( new Field( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, Field.Store.YES, Field.Index.UN_TOKENIZED ) ); + hdr.add( new Field( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, Field.Store.YES, Field.Index.NOT_ANALYZED ) ); hdr.add( new Field( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId(), Field.Store.YES, Field.Index.NO ) ); @@ -460,7 +460,8 @@ public class DefaultIndexingContext indexReader.close(); } - indexReader = IndexReader.open( indexDirectory ); + // TODO: I think ReadOnly should be okay here! We should move all our W ops against IndexWriter + indexReader = IndexReader.open( indexDirectory, false ); } return indexReader; @@ -599,18 +600,20 @@ public class DefaultIndexingContext { synchronized ( indexLock ) { + Date ts = IndexUtils.getTimestamp( directory ); + closeReaders(); deleteIndexFiles(); Directory.copy( directory, indexDirectory, false ); + // We do it manually here, since we do want delete to happen 1st + // IndexUtils.copyDirectory( directory, indexDirectory ); // reclaim the index as mine storeDescriptor(); - timestamp = IndexUtils.getTimestamp( directory ); - - IndexUtils.updateTimestamp( indexDirectory, getTimestamp() ); + updateTimestamp( true, ts ); optimize(); } @@ -631,7 +634,7 @@ public class DefaultIndexingContext IndexSearcher s = getIndexSearcher(); - IndexReader r = IndexReader.open( directory ); + IndexReader r = IndexReader.open( directory, true ); try { Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java Thu Dec 2 16:20:38 2010 @@ -46,6 +46,19 @@ public class IndexUtils { public static final String TIMESTAMP_FILE = "timestamp"; + // Directory + + public static void copyDirectory( Directory source, Directory target ) + throws IOException + { + // perform plain copy (but semantic changes between Lucene 2.4 and 2.9 exists, so timestmap file will be not + // copied in 2.9) + Directory.copy( source, target, false ); + + Date ts = getTimestamp( source ); + updateTimestamp( target, ts ); + } + // timestamp public static ArtifactInfo constructArtifactInfo( Document doc, IndexingContext context ) Modified: maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java?rev=1041431&r1=1041430&r2=1041431&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java (original) +++ maven/indexer/trunk/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterTest.java Thu Dec 2 16:20:38 2010 @@ -88,9 +88,12 @@ public class DefaultIndexUpdaterTest assertEquals( tempContent.toString(), 2, tempContent.size() ); // RAMDirectory is closed with context, forcing timestamp update - IndexUtils.updateTimestamp( tempContext.getIndexDirectory(), tempContext.getTimestamp() ); + tempContext.updateTimestamp( true ); - RAMDirectory tempDir2 = new RAMDirectory( tempContext.getIndexDirectory() ); + // A change in RAMDirectory and Directory behavior in general: it will copy the Index files ONLY + // So we must make sure that timestamp file is transferred correctly. + RAMDirectory tempDir2 = new RAMDirectory(); + IndexUtils.copyDirectory( tempContext.getIndexDirectory(), tempDir2 ); Date newIndexTimestamp = tempContext.getTimestamp();