From 0e561135d20bf78e60ed81d3b1703f507a1e6cc1 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Thu, 13 Jun 2019 09:49:49 +0100 Subject: [PATCH 4/5] Changes needed to migrate to Lucene 8 Including: * Moving to Java 8 as a minimum * Some static functions moved: MultiFields -> MultiBits * totalHits -> totalHits.value (and this type also changed int -> long) * Addtional threshold param added to TopScoreDocCollector.create calls and set conservatively high to preserve existing behaviour * Actually attempt to get the lock instead of calling IndexWriter.isLocked * Use TokenFilters to transform tokens to lower case * No need to set write lock timeout to zero, this functionality moved to a wrapper in the case we actually need timeouts in the future * No need to disable coord on boolean queries, this functionality went away * Fixing up NexusIndexerTest test results accordingly * Some misc other warnings fixed (unused variables and imports) Signed-off-by: Mat Booth --- .../org/apache/maven/index/ArtifactInfo.java | 3 -- .../maven/index/DefaultIndexerEngine.java | 2 +- .../maven/index/DefaultScannerListener.java | 6 ++-- .../maven/index/DefaultSearchEngine.java | 6 ++-- .../index/context/DefaultIndexingContext.java | 32 ++++++++++++------- .../maven/index/context/IndexUtils.java | 2 -- .../maven/index/context/NexusAnalyzer.java | 21 ++++-------- .../maven/index/context/NexusIndexWriter.java | 1 - .../index/context/NexusLegacyAnalyzer.java | 12 +++---- .../DefaultIncrementalHandler.java | 4 +-- .../index/updater/DefaultIndexUpdater.java | 15 +++++---- .../maven/index/updater/IndexDataWriter.java | 4 +-- .../index/AbstractRepoNexusIndexerTest.java | 4 +-- .../maven/index/Nexus737NexusIndexerTest.java | 4 +-- .../apache/maven/index/NexusIndexerTest.java | 11 +++---- .../index/context/NexusAnalyzerTest.java | 4 +-- .../testQueryCreatorNGSearch/case01.txt | 2 +- .../testQueryCreatorNGSearch/case05.txt | 2 +- .../indexer/examples/BasicUsageExample.java | 4 +-- pom.xml | 4 +-- 20 files changed, 67 insertions(+), 76 deletions(-) diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java index 7f75838..af917ea 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java +++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfo.java @@ -336,9 +336,6 @@ public class ArtifactInfo private final transient VersionScheme versionScheme; - private String uinfo = null; - - public ArtifactInfo() { versionScheme = new GenericVersionScheme(); diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java index 64faa77..318190e 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java @@ -160,7 +160,7 @@ public class DefaultIndexerEngine indexSearcher.search( new TermQuery( new Term( ArtifactInfo.UINFO, ac.getArtifactInfo().getUinfo() ) ), 2 ); - if ( result.totalHits == 1 ) + if ( result.totalHits.value == 1 ) { return indexSearcher.doc( result.scoreDocs[0].doc ); } diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java index a9ca2c7..ee9176a 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java @@ -28,7 +28,7 @@ import java.util.Set; import org.apache.lucene.document.Document; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.index.Term; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.TermQuery; @@ -212,7 +212,7 @@ public class DefaultScannerListener try { final IndexReader r = indexSearcher.getIndexReader(); - Bits liveDocs = MultiFields.getLiveDocs( r ); + Bits liveDocs = MultiBits.getLiveDocs( r ); for ( int i = 0; i < r.maxDoc(); i++ ) { @@ -261,7 +261,7 @@ public class DefaultScannerListener { for ( String uinfo : uinfos ) { - TopScoreDocCollector collector = TopScoreDocCollector.create( 1 ); + TopScoreDocCollector collector = TopScoreDocCollector.create( 1, Integer.MAX_VALUE ); indexSearcher.search( new TermQuery( new Term( ArtifactInfo.UINFO, uinfo ) ), collector ); diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java index b74302f..9d328c7 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java +++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java @@ -330,7 +330,7 @@ public class DefaultSearchEngine if ( AbstractSearchRequest.UNDEFINED != topHitCount ) { // count is set, simply just execute it as-is - final TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount ); + final TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount, Integer.MAX_VALUE ); indexSearcher.search( query, hits ); @@ -342,7 +342,7 @@ public class DefaultSearchEngine topHitCount = 1000; // perform search - TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount ); + TopScoreDocCollector hits = TopScoreDocCollector.create( topHitCount, Integer.MAX_VALUE ); indexSearcher.search( query, hits ); // check total hits against, does it fit? @@ -361,7 +361,7 @@ public class DefaultSearchEngine } // redo all, but this time with correct numbers - hits = TopScoreDocCollector.create( topHitCount ); + hits = TopScoreDocCollector.create( topHitCount, Integer.MAX_VALUE ); indexSearcher.search( query, hits ); } diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java index 8a64a4d..8382d29 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java +++ b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java @@ -43,7 +43,7 @@ import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.index.Term; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.SearcherManager; @@ -242,7 +242,11 @@ public class DefaultIndexingContext try { // unlock the dir forcibly - if ( IndexWriter.isLocked( indexDirectory ) ) + try + { + indexDirectory.obtainLock( IndexWriter.WRITE_LOCK_NAME ).close(); + } + catch ( LockObtainFailedException failed ) { unlockForcibly( lockFactory, indexDirectory ); } @@ -279,7 +283,11 @@ public class DefaultIndexingContext closeReaders(); // unlock the dir forcibly - if ( IndexWriter.isLocked( indexDirectory ) ) + try + { + indexDirectory.obtainLock( IndexWriter.WRITE_LOCK_NAME ).close(); + } + catch ( LockObtainFailedException failed ) { unlockForcibly( lockFactory, indexDirectory ); } @@ -310,7 +318,7 @@ public class DefaultIndexingContext // check for descriptor if this is not a "virgin" index if ( getSize() > 0 ) { - final TopScoreDocCollector collector = TopScoreDocCollector.create( 1 ); + final TopScoreDocCollector collector = TopScoreDocCollector.create( 1, Integer.MAX_VALUE ); final IndexSearcher indexSearcher = acquireIndexSearcher(); try { @@ -532,7 +540,7 @@ public class DefaultIndexingContext this.indexWriter = new NexusIndexWriter( getIndexDirectory(), getWriterConfig() ); this.indexWriter.commit(); // LUCENE-2386 - this.searcherManager = new SearcherManager( indexWriter, false, new NexusIndexSearcherFactory( this ) ); + this.searcherManager = new SearcherManager( indexWriter, false, false, new NexusIndexSearcherFactory( this ) ); } /** @@ -675,7 +683,7 @@ public class DefaultIndexingContext { int numDocs = directoryReader.maxDoc(); - Bits liveDocs = MultiFields.getLiveDocs( directoryReader ); + Bits liveDocs = MultiBits.getLiveDocs( directoryReader ); for ( int i = 0; i < numDocs; i++ ) { if ( liveDocs != null && !liveDocs.get( i ) ) @@ -692,7 +700,7 @@ public class DefaultIndexingContext String uinfo = d.get( ArtifactInfo.UINFO ); if ( uinfo != null ) { - collector = TopScoreDocCollector.create( 1 ); + collector = TopScoreDocCollector.create( 1, Integer.MAX_VALUE ); s.search( new TermQuery( new Term( ArtifactInfo.UINFO, uinfo ) ), collector ); if ( collector.getTotalHits() == 0 ) { @@ -780,7 +788,7 @@ public class DefaultIndexingContext Set allGroups = new LinkedHashSet(); int numDocs = r.maxDoc(); - Bits liveDocs = MultiFields.getLiveDocs( r ); + Bits liveDocs = MultiBits.getLiveDocs( r ); for ( int i = 0; i < numDocs; i++ ) { @@ -841,14 +849,16 @@ public class DefaultIndexingContext protected Set getGroups( String field, String filedValue, String listField ) throws IOException, CorruptIndexException { - final TopScoreDocCollector collector = TopScoreDocCollector.create( 1 ); + final TopScoreDocCollector collector = TopScoreDocCollector.create( 1, Integer.MAX_VALUE ); final IndexSearcher indexSearcher = acquireIndexSearcher(); try { indexSearcher.search( new TermQuery( new Term( field, filedValue ) ), collector ); TopDocs topDocs = collector.topDocs(); - Set groups = new LinkedHashSet( Math.max( 10, topDocs.totalHits ) ); - if ( topDocs.totalHits > 0 ) + // In Lucene 7 topDocs.totalHits is now a long, but we can safely cast this to an int because + // indexes are still bound to at most 2 billion (Integer.MAX_VALUE) documents + Set groups = new LinkedHashSet( (int) Math.max( 10L, topDocs.totalHits.value ) ); + if ( topDocs.totalHits.value > 0 ) { Document doc = indexSearcher.doc( topDocs.scoreDocs[0].doc ); String groupList = doc.get( listField ); diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java b/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java index f7ef771..65b891d 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java +++ b/indexer-core/src/main/java/org/apache/maven/index/context/IndexUtils.java @@ -44,8 +44,6 @@ public class IndexUtils { public static final String TIMESTAMP_FILE = "timestamp"; - private static final int BUFFER_SIZE = 16384; - // Directory public static void copyDirectory( Directory source, Directory target ) diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java b/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java index b5f49b1..95624ff 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java +++ b/indexer-core/src/main/java/org/apache/maven/index/context/NexusAnalyzer.java @@ -21,6 +21,8 @@ package org.apache.maven.index.context; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.AnalyzerWrapper; +import org.apache.lucene.analysis.Tokenizer; +import org.apache.lucene.analysis.LowerCaseFilter; import org.apache.lucene.analysis.util.CharTokenizer; import org.apache.maven.index.creator.JarFileContentsIndexCreator; @@ -40,7 +42,8 @@ public final class NexusAnalyzer @Override protected TokenStreamComponents createComponents( String fieldName ) { - return new TokenStreamComponents( new DeprecatedClassnamesTokenizer() ); + final Tokenizer tokenizer = new DeprecatedClassnamesTokenizer(); + return new TokenStreamComponents( tokenizer, new LowerCaseFilter( tokenizer ) ); } }; @@ -49,7 +52,8 @@ public final class NexusAnalyzer @Override protected TokenStreamComponents createComponents( String filedName ) { - return new TokenStreamComponents( new LetterOrDigitTokenizer() ); + final Tokenizer tokenizer = new LetterOrDigitTokenizer(); + return new TokenStreamComponents( tokenizer, new LowerCaseFilter( tokenizer ) ); } }; @@ -103,12 +107,6 @@ public final class NexusAnalyzer { return i != '\n'; } - - @Override - protected int normalize( int c ) - { - return Character.toLowerCase( c ); - } } public static class LetterOrDigitTokenizer @@ -124,12 +122,5 @@ public final class NexusAnalyzer { return Character.isLetterOrDigit( c ); } - - @Override - protected int normalize( int c ) - { - return Character.toLowerCase( c ); - } } - } diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java b/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java index eb2246b..a93ed10 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java +++ b/indexer-core/src/main/java/org/apache/maven/index/context/NexusIndexWriter.java @@ -63,7 +63,6 @@ public class NexusIndexWriter // default open mode is CreateOrAppend which suits us config.setRAMBufferSizeMB( 2.0 ); // old default config.setMergeScheduler( new SerialMergeScheduler() ); // merging serially - config.setWriteLockTimeout( IndexWriterConfig.WRITE_LOCK_TIMEOUT ); return config; } } diff --git a/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java b/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java index 4cb15ce..21d8a41 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java +++ b/indexer-core/src/main/java/org/apache/maven/index/context/NexusLegacyAnalyzer.java @@ -21,6 +21,8 @@ package org.apache.maven.index.context; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.AnalyzerWrapper; +import org.apache.lucene.analysis.LowerCaseFilter; +import org.apache.lucene.analysis.Tokenizer; import org.apache.lucene.analysis.util.CharTokenizer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.maven.index.ArtifactInfo; @@ -42,20 +44,16 @@ public final class NexusLegacyAnalyzer @Override protected TokenStreamComponents createComponents( final String fieldName ) { - return new TokenStreamComponents( new CharTokenizer() + final Tokenizer tokenizer = new CharTokenizer() { @Override protected boolean isTokenChar( int c ) { return Character.isLetterOrDigit( c ); } + }; - @Override - protected int normalize( int c ) - { - return Character.toLowerCase( c ); - } - } ); + return new TokenStreamComponents( tokenizer, new LowerCaseFilter( tokenizer ) ); } }; diff --git a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java index bef2f2c..95f1de0 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java +++ b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java @@ -40,7 +40,7 @@ import javax.inject.Singleton; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.util.Bits; import org.apache.maven.index.ArtifactInfo; import org.apache.maven.index.context.IndexingContext; @@ -158,7 +158,7 @@ public class DefaultIncrementalHandler { final List chunk = new ArrayList<>(); final IndexReader r = request.getIndexReader(); - Bits liveDocs = MultiFields.getLiveDocs( r ); + Bits liveDocs = MultiBits.getLiveDocs( r ); for ( int i = 0; i < r.maxDoc(); i++ ) { if ( liveDocs == null || liveDocs.get( i ) ) diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java index 38c8d0d..e61298f 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java @@ -48,7 +48,8 @@ import org.apache.lucene.document.Document; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.store.Directory; import org.apache.lucene.util.Bits; import org.apache.maven.index.context.DocumentFilter; @@ -256,9 +257,9 @@ public class DefaultIndexUpdater try { r = DirectoryReader.open( directory ); - w = new NexusIndexWriter( directory, new NexusAnalyzer(), false ); - - Bits liveDocs = MultiFields.getLiveDocs( r ); + w = new NexusIndexWriter( directory, new IndexWriterConfig( new NexusAnalyzer() ) ); + + Bits liveDocs = MultiBits.getLiveDocs( r ); int numDocs = r.maxDoc(); @@ -273,7 +274,7 @@ public class DefaultIndexUpdater if ( !filter.accept( d ) ) { - boolean success = w.tryDeleteDocument( r, i ); + boolean success = w.tryDeleteDocument( r, i ) != -1; // FIXME handle deletion failure } } @@ -289,7 +290,7 @@ public class DefaultIndexUpdater try { // analyzer is unimportant, since we are not adding/searching to/on index, only reading/deleting - w = new NexusIndexWriter( directory, new NexusAnalyzer(), false ); + w = new NexusIndexWriter( directory, new IndexWriterConfig( new NexusAnalyzer() ) ); w.commit(); } @@ -379,7 +380,7 @@ public class DefaultIndexUpdater final IndexingContext context ) throws IOException { - NexusIndexWriter w = new NexusIndexWriter( d, new NexusAnalyzer(), true ); + NexusIndexWriter w = new NexusIndexWriter( d, new IndexWriterConfig( new NexusAnalyzer() ) ); try { IndexDataReader dr = new IndexDataReader( is ); diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java index 11550bd..be656db 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataWriter.java @@ -35,7 +35,7 @@ import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexOptions; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexableField; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.util.Bits; import org.apache.maven.index.ArtifactInfo; import org.apache.maven.index.IndexerField; @@ -143,7 +143,7 @@ public class IndexDataWriter throws IOException { int n = 0; - Bits liveDocs = MultiFields.getLiveDocs( r ); + Bits liveDocs = MultiBits.getLiveDocs( r ); if ( docIndexes == null ) { diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java index 5b34d49..ddda24d 100644 --- a/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java +++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractRepoNexusIndexerTest.java @@ -29,7 +29,7 @@ import java.util.Set; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.search.Query; import org.apache.lucene.util.Bits; import org.apache.maven.index.search.grouping.GAGrouping; @@ -514,7 +514,7 @@ public abstract class AbstractRepoNexusIndexerTest { IndexReader reader = context.acquireIndexSearcher().getIndexReader(); - Bits liveDocs = MultiFields.getLiveDocs(reader); + Bits liveDocs = MultiBits.getLiveDocs(reader); for ( int i = 0; i < reader.maxDoc(); i++ ) { if (liveDocs == null || liveDocs.get(i) ) diff --git a/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java index adb8393..8d073ec 100644 --- a/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java +++ b/indexer-core/src/test/java/org/apache/maven/index/Nexus737NexusIndexerTest.java @@ -23,7 +23,7 @@ import java.io.File; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.util.Bits; /** http://issues.sonatype.org/browse/NEXUS-737 */ @@ -45,7 +45,7 @@ public class Nexus737NexusIndexerTest throws Exception { IndexReader reader = context.acquireIndexSearcher().getIndexReader(); - Bits liveDocs = MultiFields.getLiveDocs(reader); + Bits liveDocs = MultiBits.getLiveDocs(reader); int foundCount = 0; diff --git a/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java b/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java index 33a3ff1..b479093 100644 --- a/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java +++ b/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java @@ -20,8 +20,6 @@ package org.apache.maven.index; */ import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileReader; import java.io.IOException; @@ -82,7 +80,7 @@ public class NexusIndexerTest // scored search against field having tokenized IndexerField only (should be impossible). q = indexer.constructQuery( MAVEN.NAME, "Some artifact name from Pom", SearchType.SCORED ); - assertThat(q.toString(), is("(+n:some +n:artifact +n:name +n:from +n:pom*) n:\"some artifact name from pom\"")); + assertThat(q.toString(), is("(+n:some +n:artifact +n:name +n:from +n:Pom*) n:\"some artifact name from pom\"")); } public void testQueryCreatorNG() @@ -118,19 +116,19 @@ public class NexusIndexerTest // scored search against field having untokenized indexerField only q = indexer.constructQuery( MAVEN.PACKAGING, "maven-archetype", SearchType.SCORED ); - assertEquals( "p:maven-archetype p:maven-archetype*^0.8", q.toString() ); + assertEquals( "p:maven-archetype (p:maven-archetype*)^0.8", q.toString() ); // scored search against field having untokenized indexerField only q = indexer.constructQuery( MAVEN.ARTIFACT_ID, "commons-logging", SearchType.SCORED ); assertEquals( - "(a:commons-logging a:commons-logging*^0.8) ((+artifactId:commons +artifactId:logging*) artifactId:\"commons logging\")", + "(a:commons-logging (a:commons-logging*)^0.8) ((+artifactId:commons +artifactId:logging*) artifactId:\"commons logging\")", q.toString() ); // scored search against field having tokenized IndexerField only (should be impossible). q = indexer.constructQuery( MAVEN.NAME, "Some artifact name from Pom", SearchType.SCORED ); - assertEquals( "(+n:some +n:artifact +n:name +n:from +n:pom*) n:\"some artifact name from pom\"", q.toString() ); + assertEquals( "(+n:some +n:artifact +n:name +n:from +n:Pom*) n:\"some artifact name from pom\"", q.toString() ); // keyword search against field having tokenized IndexerField only (should be impossible). q = indexer.constructQuery( MAVEN.NAME, "some artifact name from Pom", SearchType.EXACT ); @@ -444,7 +442,6 @@ public class NexusIndexerTest { BooleanQuery bq = new BooleanQuery.Builder() - .setDisableCoord( true ) .add( new WildcardQuery( new Term( ArtifactInfo.GROUP_ID, "testng*" ) ), Occur.SHOULD ) .add( new WildcardQuery( new Term( ArtifactInfo.ARTIFACT_ID, "testng*" ) ), Occur.SHOULD ) .setMinimumNumberShouldMatch( 1 ) diff --git a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java index a7c71b0..ad1e11b 100644 --- a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java +++ b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java @@ -26,7 +26,7 @@ import java.util.Arrays; import junit.framework.TestCase; -import org.apache.lucene.analysis.Tokenizer; +import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.maven.index.IndexerField; import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator; @@ -55,7 +55,7 @@ public class NexusAnalyzerTest protected void runAndCompare( IndexerField indexerField, String text, String[] expected ) throws IOException { - Tokenizer ts = (Tokenizer) nexusAnalyzer.tokenStream(indexerField.getKey(), new StringReader( text ) ); + TokenStream ts = nexusAnalyzer.tokenStream(indexerField.getKey(), new StringReader( text ) ); ts.reset(); ArrayList tokenList = new ArrayList(); diff --git a/indexer-core/src/test/resources/testQueryCreatorNGSearch/case01.txt b/indexer-core/src/test/resources/testQueryCreatorNGSearch/case01.txt index 17691d9..f9f959c 100644 --- a/indexer-core/src/test/resources/testQueryCreatorNGSearch/case01.txt +++ b/indexer-core/src/test/resources/testQueryCreatorNGSearch/case01.txt @@ -1,4 +1,4 @@ -### Searched for field urn:maven#groupId (with 2 registered index fields) using query "commons-logg" (QC create LQL "(g:commons-logg g:commons-logg*^0.8) ((+groupId:commons +groupId:logg*) groupId:"commons logg")") +### Searched for field urn:maven#groupId (with 2 registered index fields) using query "commons-logg" (QC create LQL "(g:commons-logg (g:commons-logg*)^0.8) ((+groupId:commons +groupId:logg*) groupId:"commons logg")") test :: commons-logging:commons-logging:1.1:null:jar test :: commons-logging:commons-logging:1.1:sources:jar test :: commons-logging:commons-logging:1.0.4:null:jar diff --git a/indexer-core/src/test/resources/testQueryCreatorNGSearch/case05.txt b/indexer-core/src/test/resources/testQueryCreatorNGSearch/case05.txt index bd52ac6..485b3f5 100644 --- a/indexer-core/src/test/resources/testQueryCreatorNGSearch/case05.txt +++ b/indexer-core/src/test/resources/testQueryCreatorNGSearch/case05.txt @@ -1,4 +1,4 @@ -### Searched for field urn:maven#version (with 2 registered index fields) using query "1.0" (QC create LQL "(v:1.0 v:1.0*^0.8) ((+version:1 +version:0*) version:"1 0")") +### Searched for field urn:maven#version (with 2 registered index fields) using query "1.0" (QC create LQL "(v:1.0 (v:1.0*)^0.8) ((+version:1 +version:0*) version:"1 0")") test :: proptest:proptest-archetype:1.0:null:maven-archetype test :: org.apache.maven.plugins:maven-core-it-plugin:1.0:null:maven-plugin test :: org.apache.maven.plugins:maven-core-it-plugin:1.0:sources:jar diff --git a/indexer-examples/indexer-examples-basic/src/main/java/org/apache/maven/indexer/examples/BasicUsageExample.java b/indexer-examples/indexer-examples-basic/src/main/java/org/apache/maven/indexer/examples/BasicUsageExample.java index ab34ebf..397d847 100644 --- a/indexer-examples/indexer-examples-basic/src/main/java/org/apache/maven/indexer/examples/BasicUsageExample.java +++ b/indexer-examples/indexer-examples-basic/src/main/java/org/apache/maven/indexer/examples/BasicUsageExample.java @@ -21,7 +21,7 @@ package org.apache.maven.indexer.examples; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.MultiFields; +import org.apache.lucene.index.MultiBits; import org.apache.lucene.search.BooleanClause.Occur; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.IndexSearcher; @@ -202,7 +202,7 @@ public class BasicUsageExample try { final IndexReader ir = searcher.getIndexReader(); - Bits liveDocs = MultiFields.getLiveDocs( ir ); + Bits liveDocs = MultiBits.getLiveDocs( ir ); for ( int i = 0; i < ir.maxDoc(); i++ ) { if ( liveDocs == null || liveDocs.get( i ) ) diff --git a/pom.xml b/pom.xml index 6f42633..ed8f361 100644 --- a/pom.xml +++ b/pom.xml @@ -83,13 +83,13 @@ under the License. - 7 + 8 true true MagicNumber,ParameterNumber,MethodLength,JavadocType,AvoidNestedBlocks,InterfaceIsType 0.3.3 - 5.5.5 + 8.1.1 3.5.2 1.1.0 2.4 -- 2.31.1