From 151b161c65c44c698e076b6656119ebe0749d065 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Thu, 13 Jun 2019 00:27:17 +0100 Subject: [PATCH 2/5] Eliminate use of deprecated Lucene API - Field Refactor to avoid using the following deprecated symbols: * Field.Index * Field.TermVector * Token These symbols only exist to support transitioning from pre-4.0 Lucene APIs, so this will make it easier to move to newer Lucenes in the future. Signed-off-by: Mat Booth --- .../apache/maven/index/ArtifactContext.java | 9 +- .../maven/index/ArtifactInfoRecord.java | 8 +- .../maven/index/DefaultIndexerEngine.java | 8 +- .../org/apache/maven/index/IndexerField.java | 90 +++++++++---------- .../apache/maven/index/OneLineFragmenter.java | 11 --- .../index/context/DefaultIndexingContext.java | 14 +-- .../maven/index/context/IndexUtils.java | 8 +- .../creator/JarFileContentsIndexCreator.java | 6 +- .../MavenPluginArtifactInfoIndexCreator.java | 6 +- .../MinimalArtifactInfoIndexCreator.java | 39 ++++---- .../creator/OsgiArtifactIndexCreator.java | 41 +++++---- .../maven/index/updater/IndexDataReader.java | 21 ++--- .../maven/index/updater/IndexDataWriter.java | 19 ++-- 13 files changed, 125 insertions(+), 155 deletions(-) diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java index a720028..18a5e94 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java +++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactContext.java @@ -28,8 +28,7 @@ import java.util.List; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; +import org.apache.lucene.document.StoredField; import org.apache.maven.index.artifact.Gav; import org.apache.maven.index.context.IndexCreator; import org.apache.maven.index.context.IndexingContext; @@ -166,10 +165,10 @@ public class ArtifactContext Document doc = new Document(); // unique key - doc.add( new Field( ArtifactInfo.UINFO, getArtifactInfo().getUinfo(), Store.YES, Index.NOT_ANALYZED ) ); + doc.add( new Field( ArtifactInfo.UINFO, getArtifactInfo().getUinfo(), IndexerField.KEYWORD_STORED ) ); - doc.add( new Field( ArtifactInfo.LAST_MODIFIED, // - Long.toString( System.currentTimeMillis() ), Store.YES, Index.NO ) ); + doc.add( new StoredField( ArtifactInfo.LAST_MODIFIED, // + Long.toString( System.currentTimeMillis() ) ) ); for ( IndexCreator indexCreator : context.getIndexCreators() ) { diff --git a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java index 9e65d53..f1bfe85 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java +++ b/indexer-core/src/main/java/org/apache/maven/index/ArtifactInfoRecord.java @@ -22,8 +22,7 @@ package org.apache.maven.index; import java.io.Serializable; import java.util.regex.Pattern; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; +import org.apache.lucene.document.StoredField; /** * Pulling out ArtifactInfo, clearing up. TBD. This gonna be extensible "map-like" class with fields. @@ -53,14 +52,13 @@ 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.NOT_ANALYZED ); + "Artifact UINFO (as keyword, stored)", IndexerField.KEYWORD_STORED ); /** * Del: contains UINFO to mark record as deleted (needed for incremental updates!). The original document IS * removed, but this marker stays on index to note that fact. */ public static final IndexerField FLD_DELETED = new IndexerField( NEXUS.DELETED, IndexerFieldVersion.V1, "del", - "Deleted field, will contain UINFO if document is deleted from index (not indexed, stored)", Store.YES, - Index.NO ); + "Deleted field, will contain UINFO if document is deleted from index (not indexed, stored)", StoredField.TYPE ); } 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 ba234eb..64faa77 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 @@ -27,7 +27,7 @@ import java.util.Map; import java.util.Set; import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field; +import org.apache.lucene.document.StoredField; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexableField; import org.apache.lucene.index.Term; @@ -100,9 +100,9 @@ public class DefaultIndexerEngine // add artifact deletion marker final Document doc = new Document(); - doc.add( new Field( ArtifactInfo.DELETED, uinfo, Field.Store.YES, Field.Index.NO ) ); - doc.add( new Field( ArtifactInfo.LAST_MODIFIED, // - Long.toString( System.currentTimeMillis() ), Field.Store.YES, Field.Index.NO ) ); + doc.add( new StoredField( ArtifactInfo.DELETED, uinfo ) ); + doc.add( new StoredField( ArtifactInfo.LAST_MODIFIED, // + Long.toString( System.currentTimeMillis() ) ) ); IndexWriter w = context.getIndexWriter(); w.addDocument( doc ); diff --git a/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java b/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java index bf99c97..3d67b2a 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java +++ b/indexer-core/src/main/java/org/apache/maven/index/IndexerField.java @@ -20,9 +20,8 @@ package org.apache.maven.index; */ import org.apache.lucene.document.Field; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; -import org.apache.lucene.document.Field.TermVector; +import org.apache.lucene.document.FieldType; +import org.apache.lucene.index.IndexOptions; /** * Holds basic information about Indexer field, how it is stored. To keep this centralized, and not spread across code. @@ -38,21 +37,45 @@ public class IndexerField private final String key; - private final Store storeMethod; + private final FieldType fieldType; - private final Index indexMethod; + /** Indexed, not tokenized, not stored. */ + public static final FieldType KEYWORD_NOT_STORED = new FieldType(); - private final TermVector termVector; + /** Indexed, not tokenized, stored. */ + public static final FieldType KEYWORD_STORED = new FieldType(); - public IndexerField( final org.apache.maven.index.Field ontology, final IndexerFieldVersion version, - final String key, final String description, final Store storeMethod, final Index indexMethod ) + /** Indexed, tokenized, not stored. */ + public static final FieldType ANALYZED_NOT_STORED = new FieldType(); + + /** Indexed, tokenized, stored. */ + public static final FieldType ANALYZED_STORED = new FieldType(); + + static { - this( ontology, version, key, description, storeMethod, indexMethod, null ); + KEYWORD_NOT_STORED.setIndexOptions( IndexOptions.DOCS_AND_FREQS_AND_POSITIONS ); + KEYWORD_NOT_STORED.setStored( false ); + KEYWORD_NOT_STORED.setTokenized( false ); + KEYWORD_NOT_STORED.freeze(); + + KEYWORD_STORED.setIndexOptions( IndexOptions.DOCS_AND_FREQS_AND_POSITIONS ); + KEYWORD_STORED.setStored( true ); + KEYWORD_STORED.setTokenized( false ); + KEYWORD_STORED.freeze(); + + ANALYZED_NOT_STORED.setIndexOptions( IndexOptions.DOCS_AND_FREQS_AND_POSITIONS ); + ANALYZED_NOT_STORED.setStored( false ); + ANALYZED_NOT_STORED.setTokenized( true ); + ANALYZED_NOT_STORED.freeze(); + + ANALYZED_STORED.setIndexOptions( IndexOptions.DOCS_AND_FREQS_AND_POSITIONS ); + ANALYZED_STORED.setStored( true ); + ANALYZED_STORED.setTokenized( true ); + ANALYZED_STORED.freeze(); } public IndexerField( final org.apache.maven.index.Field ontology, final IndexerFieldVersion version, - final String key, final String description, final Store storeMethod, final Index indexMethod, - final TermVector termVector ) + final String key, final String description, final FieldType fieldType ) { this.ontology = ontology; @@ -60,11 +83,7 @@ public class IndexerField this.key = key; - this.storeMethod = storeMethod; - - this.indexMethod = indexMethod; - - this.termVector = termVector; + this.fieldType = fieldType; ontology.addIndexerField( this ); } @@ -84,55 +103,28 @@ public class IndexerField return key; } - public Field.Store getStoreMethod() - { - return storeMethod; - } - - public Field.Index getIndexMethod() - { - return indexMethod; - } - - public Field.TermVector getTermVector() + public FieldType getFieldType() { - return termVector; + return fieldType; } public boolean isIndexed() { - return !Index.NO.equals( indexMethod ); + return fieldType.indexOptions() != IndexOptions.NONE; } public boolean isKeyword() { - return isIndexed() && !Index.ANALYZED.equals( indexMethod ); + return isIndexed() && !fieldType.tokenized(); } public boolean isStored() { - return !( Store.NO.equals( storeMethod ) ); + return fieldType.stored(); } public Field toField( String value ) { - Field result; - - if ( getTermVector() != null ) - { - result = new Field( getKey(), value, getStoreMethod(), getIndexMethod(), getTermVector() ); - } - else - { - result = new Field( getKey(), value, getStoreMethod(), getIndexMethod() ); - } - - // if ( isKeyword() ) - // { - // result.setOmitNorms( true ); - // result.setOmitTf( true ); - // } - - return result; + return new Field( getKey(), value, getFieldType() ); } } diff --git a/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java b/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java index d346a04..d0c9af3 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java +++ b/indexer-core/src/main/java/org/apache/maven/index/OneLineFragmenter.java @@ -19,7 +19,6 @@ package org.apache.maven.index; * under the License. */ -import org.apache.lucene.analysis.Token; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.search.highlight.Fragmenter; @@ -33,16 +32,6 @@ public class OneLineFragmenter setText( originalText ); } - public boolean isNewFragment( Token nextToken ) - { - // text: /org/sonatype/... - // tokens: org sonatype - boolean result = - isNewline( getChar( nextToken.startOffset() - 1 ) ) || isNewline( getChar( nextToken.startOffset() - 2 ) ); - - return result; - } - protected boolean isNewline( char c ) { return c == '\n'; 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 6a092c1..8a64a4d 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 @@ -33,9 +33,11 @@ import java.util.Date; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; + import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; +import org.apache.lucene.document.StoredField; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; @@ -55,6 +57,7 @@ import org.apache.lucene.store.Lock; import org.apache.lucene.store.LockObtainFailedException; import org.apache.lucene.util.Bits; import org.apache.maven.index.ArtifactInfo; +import org.apache.maven.index.IndexerField; import org.apache.maven.index.artifact.GavCalculator; import org.apache.maven.index.artifact.M2GavCalculator; import org.codehaus.plexus.util.StringUtils; @@ -363,10 +366,9 @@ public class DefaultIndexingContext { Document hdr = new Document(); - hdr.add( new Field( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, Field.Store.YES, Field.Index.NOT_ANALYZED ) ); + hdr.add( new Field( FLD_DESCRIPTOR, FLD_DESCRIPTOR_CONTENTS, IndexerField.KEYWORD_STORED ) ); - hdr.add( new Field( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId(), Field.Store.YES, - Field.Index.NO ) ); + hdr.add( new StoredField( FLD_IDXINFO, VERSION + ArtifactInfo.FS + getRepositoryId() ) ); IndexWriter w = getIndexWriter(); @@ -876,10 +878,8 @@ public class DefaultIndexingContext String listField ) { final Document groupDoc = new Document(); - groupDoc.add( new Field( field, // - fieldValue, Field.Store.YES, Field.Index.NOT_ANALYZED ) ); - groupDoc.add( new Field( listField, // - ArtifactInfo.lst2str( groups ), Field.Store.YES, Field.Index.NO ) ); + groupDoc.add( new Field( field, fieldValue, IndexerField.KEYWORD_STORED ) ); + groupDoc.add( new StoredField( listField, ArtifactInfo.lst2str( groups ) ) ); return groupDoc; } 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 cd676ff..f7ef771 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 @@ -29,6 +29,7 @@ import java.util.Date; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; +import org.apache.lucene.document.StoredField; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.Directory; @@ -36,6 +37,7 @@ import org.apache.lucene.store.IOContext; import org.apache.lucene.store.IndexInput; import org.apache.lucene.store.IndexOutput; import org.apache.maven.index.ArtifactInfo; +import org.apache.maven.index.IndexerField; import org.codehaus.plexus.util.FileUtils; public class IndexUtils @@ -149,12 +151,12 @@ public class IndexUtils Document document = new Document(); // unique key - document.add( new Field( ArtifactInfo.UINFO, ai.getUinfo(), Field.Store.YES, Field.Index.NOT_ANALYZED ) ); + document.add( new Field( ArtifactInfo.UINFO, ai.getUinfo(), IndexerField.KEYWORD_STORED ) ); if ( updateLastModified || doc.getField( ArtifactInfo.LAST_MODIFIED ) == null ) { - document.add( new Field( ArtifactInfo.LAST_MODIFIED, // - Long.toString( System.currentTimeMillis() ), Field.Store.YES, Field.Index.NO ) ); + document.add( new StoredField( ArtifactInfo.LAST_MODIFIED, // + Long.toString( System.currentTimeMillis() ) ) ); } else { diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java index 9318fbb..7f1c978 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java @@ -28,8 +28,6 @@ import java.util.Collection; import java.util.List; import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; import org.apache.maven.index.ArtifactContext; import org.apache.maven.index.ArtifactInfo; import org.apache.maven.index.IndexerField; @@ -52,7 +50,7 @@ public class JarFileContentsIndexCreator public static final String ID = "jarContent"; public static final IndexerField FLD_CLASSNAMES = new IndexerField( MAVEN.CLASSNAMES, IndexerFieldVersion.V3, - "classnames", "Artifact Classes (tokenized)", Store.NO, Index.ANALYZED ); + "classnames", "Artifact Classes (tokenized)", IndexerField.ANALYZED_NOT_STORED ); /** * NexusAnalyzer makes exception with this field only, to keep backward compatibility with old consumers of @@ -60,7 +58,7 @@ public class JarFileContentsIndexCreator * registered BEFORE FLD_CLASSNAMES_KW! */ public static final IndexerField FLD_CLASSNAMES_KW = new IndexerField( MAVEN.CLASSNAMES, IndexerFieldVersion.V1, - "c", "Artifact Classes (tokenized on newlines only)", Store.YES, Index.ANALYZED ); + "c", "Artifact Classes (tokenized on newlines only)", IndexerField.ANALYZED_STORED ); public JarFileContentsIndexCreator() { diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java index 71e18d9..694ad1a 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java @@ -31,8 +31,6 @@ import java.util.Arrays; import java.util.Collection; import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; import org.apache.maven.index.ArtifactContext; import org.apache.maven.index.ArtifactInfo; import org.apache.maven.index.IndexerField; @@ -61,10 +59,10 @@ public class MavenPluginArtifactInfoIndexCreator private static final String MAVEN_PLUGIN_PACKAGING = "maven-plugin"; public static final IndexerField FLD_PLUGIN_PREFIX = new IndexerField( MAVEN.PLUGIN_PREFIX, IndexerFieldVersion.V1, - "px", "MavenPlugin prefix (as keyword, stored)", Store.YES, Index.NOT_ANALYZED ); + "px", "MavenPlugin prefix (as keyword, stored)", IndexerField.KEYWORD_STORED ); public static final IndexerField FLD_PLUGIN_GOALS = new IndexerField( MAVEN.PLUGIN_GOALS, IndexerFieldVersion.V1, - "gx", "MavenPlugin goals (as keyword, stored)", Store.YES, Index.ANALYZED ); + "gx", "MavenPlugin goals (as keyword, stored)", IndexerField.ANALYZED_STORED ); public MavenPluginArtifactInfoIndexCreator() { diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java index feea2d2..d899705 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java @@ -28,8 +28,7 @@ import java.util.Collection; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; +import org.apache.lucene.document.StoredField; import org.apache.maven.index.ArtifactAvailability; import org.apache.maven.index.ArtifactContext; import org.apache.maven.index.ArtifactInfo; @@ -67,46 +66,46 @@ public class MinimalArtifactInfoIndexCreator * Info: packaging, lastModified, size, sourcesExists, javadocExists, signatureExists. Stored, not indexed. */ public static final IndexerField FLD_INFO = new IndexerField( NEXUS.INFO, IndexerFieldVersion.V1, "i", - "Artifact INFO (not indexed, stored)", Store.YES, Index.NO ); + "Artifact INFO (not indexed, stored)", StoredField.TYPE ); public static final IndexerField FLD_GROUP_ID_KW = new IndexerField( MAVEN.GROUP_ID, IndexerFieldVersion.V1, "g", - "Artifact GroupID (as keyword)", Store.NO, Index.NOT_ANALYZED ); + "Artifact GroupID (as keyword)", IndexerField.KEYWORD_NOT_STORED ); public static final IndexerField FLD_GROUP_ID = new IndexerField( MAVEN.GROUP_ID, IndexerFieldVersion.V3, - "groupId", "Artifact GroupID (tokenized)", Store.NO, Index.ANALYZED ); + "groupId", "Artifact GroupID (tokenized)", IndexerField.ANALYZED_NOT_STORED ); public static final IndexerField FLD_ARTIFACT_ID_KW = new IndexerField( MAVEN.ARTIFACT_ID, IndexerFieldVersion.V1, - "a", "Artifact ArtifactID (as keyword)", Store.NO, Index.NOT_ANALYZED ); + "a", "Artifact ArtifactID (as keyword)", IndexerField.KEYWORD_NOT_STORED ); public static final IndexerField FLD_ARTIFACT_ID = new IndexerField( MAVEN.ARTIFACT_ID, IndexerFieldVersion.V3, - "artifactId", "Artifact ArtifactID (tokenized)", Store.NO, Index.ANALYZED ); + "artifactId", "Artifact ArtifactID (tokenized)", IndexerField.ANALYZED_NOT_STORED ); public static final IndexerField FLD_VERSION_KW = new IndexerField( MAVEN.VERSION, IndexerFieldVersion.V1, "v", - "Artifact Version (as keyword)", Store.NO, Index.NOT_ANALYZED ); + "Artifact Version (as keyword)", IndexerField.KEYWORD_NOT_STORED ); public static final IndexerField FLD_VERSION = new IndexerField( MAVEN.VERSION, IndexerFieldVersion.V3, "version", - "Artifact Version (tokenized)", Store.NO, Index.ANALYZED ); + "Artifact Version (tokenized)", IndexerField.ANALYZED_NOT_STORED ); public static final IndexerField FLD_PACKAGING = new IndexerField( MAVEN.PACKAGING, IndexerFieldVersion.V1, "p", - "Artifact Packaging (as keyword)", Store.NO, Index.NOT_ANALYZED ); + "Artifact Packaging (as keyword)", IndexerField.KEYWORD_NOT_STORED ); public static final IndexerField FLD_EXTENSION = new IndexerField( MAVEN.EXTENSION, IndexerFieldVersion.V1, "e", - "Artifact extension (as keyword)", Store.NO, Index.NOT_ANALYZED ); + "Artifact extension (as keyword)", IndexerField.KEYWORD_NOT_STORED ); public static final IndexerField FLD_CLASSIFIER = new IndexerField( MAVEN.CLASSIFIER, IndexerFieldVersion.V1, "l", - "Artifact classifier (as keyword)", Store.NO, Index.NOT_ANALYZED ); + "Artifact classifier (as keyword)", IndexerField.KEYWORD_NOT_STORED ); public static final IndexerField FLD_NAME = new IndexerField( MAVEN.NAME, IndexerFieldVersion.V1, "n", - "Artifact name (tokenized, stored)", Store.YES, Index.ANALYZED ); + "Artifact name (tokenized, stored)", IndexerField.ANALYZED_STORED ); public static final IndexerField FLD_DESCRIPTION = new IndexerField( MAVEN.DESCRIPTION, IndexerFieldVersion.V1, - "d", "Artifact description (tokenized, stored)", Store.YES, Index.ANALYZED ); + "d", "Artifact description (tokenized, stored)", IndexerField.ANALYZED_STORED ); public static final IndexerField FLD_LAST_MODIFIED = new IndexerField( MAVEN.LAST_MODIFIED, IndexerFieldVersion.V1, - "m", "Artifact last modified (not indexed, stored)", Store.YES, Index.NO ); + "m", "Artifact last modified (not indexed, stored)", StoredField.TYPE ); public static final IndexerField FLD_SHA1 = new IndexerField( MAVEN.SHA1, IndexerFieldVersion.V1, "1", - "Artifact SHA1 checksum (as keyword, stored)", Store.YES, Index.NOT_ANALYZED ); + "Artifact SHA1 checksum (as keyword, stored)", IndexerField.KEYWORD_STORED ); private Locator jl = new JavadocLocator(); @@ -310,18 +309,16 @@ public class MinimalArtifactInfoIndexCreator // legacy! if ( ai.getPrefix() != null ) { - doc.add( new Field( ArtifactInfo.PLUGIN_PREFIX, ai.getPrefix(), Field.Store.YES, - Field.Index.NOT_ANALYZED ) ); + doc.add( new Field( ArtifactInfo.PLUGIN_PREFIX, ai.getPrefix(), IndexerField.KEYWORD_STORED ) ); } if ( ai.getGoals() != null ) { - doc.add( new Field( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.getGoals() ), Field.Store.YES, - Field.Index.NO ) ); + doc.add( new StoredField( ArtifactInfo.PLUGIN_GOALS, ArtifactInfo.lst2str( ai.getGoals() ) ) ); } doc.removeField( ArtifactInfo.GROUP_ID ); - doc.add( new Field( ArtifactInfo.GROUP_ID, ai.getGroupId(), Field.Store.NO, Field.Index.NOT_ANALYZED ) ); + doc.add( new Field( ArtifactInfo.GROUP_ID, ai.getGroupId(), IndexerField.KEYWORD_NOT_STORED ) ); } public boolean updateArtifactInfo( Document doc, ArtifactInfo ai ) diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java index ed06d0b..559d2da 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java +++ b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java @@ -23,7 +23,6 @@ import javax.inject.Named; import javax.inject.Singleton; import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field; import org.apache.maven.index.ArtifactContext; import org.apache.maven.index.ArtifactInfo; import org.apache.maven.index.IndexerField; @@ -72,95 +71,95 @@ public class OsgiArtifactIndexCreator public static final IndexerField FLD_SHA256 = new IndexerField( OSGI.SHA256, IndexerFieldVersion.V4, "sha256", "SHA-256 (not analyzed, stored)", - Field.Store.YES, Field.Index.NOT_ANALYZED ); + IndexerField.KEYWORD_STORED ); private static final String BSN = "Bundle-SymbolicName"; public static final IndexerField FLD_BUNDLE_SYMBOLIC_NAME = new IndexerField( OSGI.SYMBOLIC_NAME, IndexerFieldVersion.V4, BSN, "Bundle-SymbolicName (indexed, stored)", - Field.Store.YES, Field.Index.ANALYZED ); + IndexerField.ANALYZED_STORED ); private static final String BV = "Bundle-Version"; public static final IndexerField FLD_BUNDLE_VERSION = - new IndexerField( OSGI.VERSION, IndexerFieldVersion.V4, BV, "Bundle-Version (indexed, stored)", Field.Store.YES, - Field.Index.ANALYZED ); + new IndexerField( OSGI.VERSION, IndexerFieldVersion.V4, BV, "Bundle-Version (indexed, stored)", + IndexerField.ANALYZED_STORED ); private static final String BEP = "Export-Package"; public static final IndexerField FLD_BUNDLE_EXPORT_PACKAGE = new IndexerField( OSGI.EXPORT_PACKAGE, IndexerFieldVersion.V4, BEP, "Export-Package (indexed, stored)", - Field.Store.YES, Field.Index.ANALYZED ); + IndexerField.ANALYZED_STORED ); @Deprecated private static final String BES = "Export-Service"; @Deprecated public static final IndexerField FLD_BUNDLE_EXPORT_SERVIVE = new IndexerField( OSGI.EXPORT_SERVICE, IndexerFieldVersion.V4, BES, "Export-Service (indexed, stored)", - Field.Store.YES, Field.Index.ANALYZED ); + IndexerField.ANALYZED_STORED ); private static final String BD = "Bundle-Description"; public static final IndexerField FLD_BUNDLE_DESCRIPTION = new IndexerField( OSGI.DESCRIPTION, IndexerFieldVersion.V4, BD, "Bundle-Description (indexed, stored)", - Field.Store.YES, Field.Index.ANALYZED ); + IndexerField.ANALYZED_STORED ); private static final String BN = "Bundle-Name"; public static final IndexerField FLD_BUNDLE_NAME = - new IndexerField( OSGI.NAME, IndexerFieldVersion.V4, BN, "Bundle-Name (indexed, stored)", Field.Store.YES, - Field.Index.ANALYZED ); + new IndexerField( OSGI.NAME, IndexerFieldVersion.V4, BN, "Bundle-Name (indexed, stored)", + IndexerField.ANALYZED_STORED ); private static final String BL = "Bundle-License"; public static final IndexerField FLD_BUNDLE_LICENSE = - new IndexerField( OSGI.LICENSE, IndexerFieldVersion.V4, BL, "Bundle-License (indexed, stored)", Field.Store.YES, - Field.Index.ANALYZED ); + new IndexerField( OSGI.LICENSE, IndexerFieldVersion.V4, BL, "Bundle-License (indexed, stored)", + IndexerField.ANALYZED_STORED ); private static final String BDU = "Bundle-DocURL"; public static final IndexerField FLD_BUNDLE_DOCURL = - new IndexerField( OSGI.DOCURL, IndexerFieldVersion.V4, BDU, "Bundle-DocURL (indexed, stored)", Field.Store.YES, - Field.Index.ANALYZED ); + new IndexerField( OSGI.DOCURL, IndexerFieldVersion.V4, BDU, "Bundle-DocURL (indexed, stored)", + IndexerField.ANALYZED_STORED ); private static final String BIP = "Import-Package"; public static final IndexerField FLD_BUNDLE_IMPORT_PACKAGE = new IndexerField( OSGI.IMPORT_PACKAGE, IndexerFieldVersion.V4, BIP, "Import-Package (indexed, stored)", - Field.Store.YES, Field.Index.ANALYZED ); + IndexerField.ANALYZED_STORED ); private static final String BRB = "Require-Bundle"; public static final IndexerField FLD_BUNDLE_REQUIRE_BUNDLE = new IndexerField( OSGI.REQUIRE_BUNDLE, IndexerFieldVersion.V4, BRB, "Require-Bundle (indexed, stored)", - Field.Store.YES, Field.Index.ANALYZED ); + IndexerField.ANALYZED_STORED ); private static final String PROVIDE_CAPABILITY = "Provide-Capability"; public static final IndexerField FLD_BUNDLE_PROVIDE_CAPABILITY = new IndexerField( OSGI.PROVIDE_CAPABILITY, IndexerFieldVersion.V4, PROVIDE_CAPABILITY, - "Provide-Capability (indexed, stored)", Field.Store.YES, Field.Index.ANALYZED ); + "Provide-Capability (indexed, stored)", IndexerField.ANALYZED_STORED ); private static final String REQUIRE_CAPABILITY = "Require-Capability"; public static final IndexerField FLD_BUNDLE_REQUIRE_CAPABILITY = new IndexerField( OSGI.REQUIRE_CAPABILITY, IndexerFieldVersion.V4, REQUIRE_CAPABILITY, - "Require-Capability (indexed, stored)", Field.Store.YES, Field.Index.ANALYZED ); + "Require-Capability (indexed, stored)", IndexerField.ANALYZED_STORED ); private static final String FRAGMENT_HOST = "Fragment-Host"; public static final IndexerField FLD_BUNDLE_FRAGMENT_HOST = new IndexerField( OSGI.FRAGMENT_HOST, IndexerFieldVersion.V4, FRAGMENT_HOST, "Fragment-Host (indexed, stored)", - Field.Store.YES, Field.Index.ANALYZED ); + IndexerField.ANALYZED_STORED ); private static final String BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT = "Bundle-RequiredExecutionEnvironment"; public static final IndexerField FLD_BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT = new IndexerField( OSGI.BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT, IndexerFieldVersion.V4, BUNDLE_REQUIRED_EXECUTION_ENVIRONMENT, - "Bundle-RequiredExecutionEnvironment (indexed, stored)", Field.Store.YES, - Field.Index.ANALYZED ); + "Bundle-RequiredExecutionEnvironment (indexed, stored)", + IndexerField.ANALYZED_STORED ); public Collection getIndexerFields() diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java index 67f823d..c5f1d71 100644 --- a/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java +++ b/indexer-core/src/main/java/org/apache/maven/index/updater/IndexDataReader.java @@ -34,8 +34,8 @@ import java.util.LinkedHashSet; import java.util.Set; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; +import org.apache.lucene.document.FieldType; +import org.apache.lucene.index.IndexOptions; import org.apache.lucene.index.IndexWriter; import org.apache.maven.index.ArtifactInfo; import org.apache.maven.index.context.IndexUtils; @@ -181,23 +181,20 @@ public class IndexDataReader { int flags = dis.read(); - Index index = Index.NO; + FieldType fieldType = new FieldType(); if ( ( flags & IndexDataWriter.F_INDEXED ) > 0 ) { - boolean isTokenized = ( flags & IndexDataWriter.F_TOKENIZED ) > 0; - index = isTokenized ? Index.ANALYZED : Index.NOT_ANALYZED; - } - - Store store = Store.NO; - if ( ( flags & IndexDataWriter.F_STORED ) > 0 ) - { - store = Store.YES; + boolean tokenized = ( flags & IndexDataWriter.F_TOKENIZED ) > 0; + fieldType.setTokenized( tokenized ); + fieldType.setOmitNorms( !tokenized ); + fieldType.setIndexOptions( IndexOptions.DOCS_AND_FREQS_AND_POSITIONS ); } + fieldType.setStored( ( flags & IndexDataWriter.F_STORED ) > 0 ); String name = dis.readUTF(); String value = readUTF( dis ); - return new Field( name, value, store, index ); + return new Field( name, value, fieldType ); } private static String readUTF( DataInput in ) 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 979474d..11550bd 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 @@ -31,14 +31,14 @@ import java.util.List; import java.util.Set; import java.util.zip.GZIPOutputStream; import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field.Store; -import org.apache.lucene.document.StringField; +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.util.Bits; import org.apache.maven.index.ArtifactInfo; +import org.apache.maven.index.IndexerField; import org.apache.maven.index.context.DefaultIndexingContext; import org.apache.maven.index.context.IndexingContext; @@ -122,18 +122,19 @@ public class IndexDataWriter { { List allGroupsFields = new ArrayList<>( 2 ); - allGroupsFields.add( new StringField( ArtifactInfo.ALL_GROUPS, ArtifactInfo.ALL_GROUPS_VALUE, Store.YES ) ); - allGroupsFields.add( new StringField( ArtifactInfo.ALL_GROUPS_LIST, ArtifactInfo.lst2str( allGroups ), - Store.YES ) ); + allGroupsFields.add( new Field( ArtifactInfo.ALL_GROUPS, ArtifactInfo.ALL_GROUPS_VALUE, + IndexerField.KEYWORD_STORED ) ); + allGroupsFields.add( new Field( ArtifactInfo.ALL_GROUPS_LIST, ArtifactInfo.lst2str( allGroups ), + IndexerField.KEYWORD_STORED ) ); writeDocumentFields( allGroupsFields ); } { List rootGroupsFields = new ArrayList<>( 2 ); - rootGroupsFields.add( new StringField( ArtifactInfo.ROOT_GROUPS, ArtifactInfo.ROOT_GROUPS_VALUE, - Store.YES ) ); - rootGroupsFields.add( new StringField( ArtifactInfo.ROOT_GROUPS_LIST, ArtifactInfo.lst2str( rootGroups ), - Store.YES ) ); + rootGroupsFields.add( new Field( ArtifactInfo.ROOT_GROUPS, ArtifactInfo.ROOT_GROUPS_VALUE, + IndexerField.KEYWORD_STORED ) ); + rootGroupsFields.add( new Field( ArtifactInfo.ROOT_GROUPS_LIST, ArtifactInfo.lst2str( rootGroups ), + IndexerField.KEYWORD_STORED ) ); writeDocumentFields( rootGroupsFields ); } } -- 2.31.1