Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37894771
en ru br
ALT Linux repos
S:6.0.0-alt1_8jpp11

Group :: Development/Java
RPM: maven-indexer

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: 0004-Changes-needed-to-migrate-to-Lucene-8.patch
Download


From 0e561135d20bf78e60ed81d3b1703f507a1e6cc1 Mon Sep 17 00:00:00 2001
From: Mat Booth <mat.booth@redhat.com>
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 <mat.booth@redhat.com>
---
 .../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<String> allGroups = new LinkedHashSet<String>();
 
             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<String> 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<String> groups = new LinkedHashSet<String>( 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<String> groups = new LinkedHashSet<String>( (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<Integer> 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<String> tokenList = new ArrayList<String>();
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.
   </distributionManagement>
 
   <properties>
-    <javaVersion>7</javaVersion>
+    <javaVersion>8</javaVersion>
     <surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>
     <failsafe.redirectTestOutputToFile>true</failsafe.redirectTestOutputToFile>
     <checkstyle.violation.ignore>MagicNumber,ParameterNumber,MethodLength,JavadocType,AvoidNestedBlocks,InterfaceIsType</checkstyle.violation.ignore>
 
     <eclipse-sisu.version>0.3.3</eclipse-sisu.version>
-    <lucene.version>5.5.5</lucene.version>
+    <lucene.version>8.1.1</lucene.version>
     <maven.version>3.5.2</maven.version>
     <resolver.version>1.1.0</resolver.version>
     <archetype.version>2.4</archetype.version>
-- 
2.31.1
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin