diff --git a/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java index 902af483468..efb13929062 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java @@ -204,9 +204,8 @@ public class LukeRequestHandler extends RequestHandlerBase flags.append( (f != null && f.storeTermPositions() ) ? FieldFlag.TERM_VECTOR_POSITION.getAbbreviation() : '-' ); flags.append( (f != null && f.omitNorms()) ? FieldFlag.OMIT_NORMS.getAbbreviation() : '-' ); flags.append( (f != null && - f.indexOptions() == IndexOptions.DOCS_ONLY) ? FieldFlag.OMIT_TF.getAbbreviation() : '-' ); - flags.append( (f != null && - f.indexOptions() == IndexOptions.DOCS_AND_FREQS) ? FieldFlag.OMIT_POSITIONS.getAbbreviation() : '-' ); + f.omitTermFreqAndPositions() ) ? FieldFlag.OMIT_TF.getAbbreviation() : '-' ); + flags.append( (f != null && f.omitPositions() ) ? FieldFlag.OMIT_POSITIONS.getAbbreviation() : '-' ); flags.append( (lazy) ? FieldFlag.LAZY.getAbbreviation() : '-' ); flags.append( (binary) ? FieldFlag.BINARY.getAbbreviation() : '-' ); flags.append( (f != null && f.sortMissingFirst() ) ? FieldFlag.SORT_MISSING_FIRST.getAbbreviation() : '-' ); diff --git a/solr/core/src/java/org/apache/solr/schema/FieldType.java b/solr/core/src/java/org/apache/solr/schema/FieldType.java index fd3aa7e94d6..db410e87f90 100644 --- a/solr/core/src/java/org/apache/solr/schema/FieldType.java +++ b/solr/core/src/java/org/apache/solr/schema/FieldType.java @@ -250,9 +250,10 @@ public abstract class FieldType extends FieldProperties { } if (val==null) return null; - return createField(field.getName(), val, getFieldStore(field, val), - getFieldIndex(field, val), getFieldTermVec(field, val), field.omitNorms(), - field.indexOptions(), boost); + return createField(field.getName(), val, + getFieldStore(field, val), getFieldIndex(field, val), + getFieldTermVec(field, val), field.omitNorms(), + getIndexOptions(field, val), boost); } @@ -276,9 +277,11 @@ public abstract class FieldType extends FieldProperties { storage, index, vec); - f.setOmitNorms(omitNorms); - f.setIndexOptions(options); - f.setBoost(boost); + if (index.isIndexed()) { + f.setOmitNorms(omitNorms); + f.setIndexOptions(options); + f.setBoost(boost); + } return f; } @@ -320,6 +323,16 @@ public abstract class FieldType extends FieldProperties { return field.indexed() ? (isTokenized() ? Field.Index.ANALYZED : Field.Index.NOT_ANALYZED) : Field.Index.NO; } + protected IndexOptions getIndexOptions(SchemaField field, + String internalVal) { + IndexOptions options = IndexOptions.DOCS_AND_FREQS_AND_POSITIONS; + if (field.omitTermFreqAndPositions()) { + options = IndexOptions.DOCS_ONLY; + } else if (field.omitPositions()) { + options = IndexOptions.DOCS_AND_FREQS; + } + return options; + } /** * Convert an external value (from XML update command or from query string) diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaField.java b/solr/core/src/java/org/apache/solr/schema/SchemaField.java index 4d881d50627..b591d70994f 100644 --- a/solr/core/src/java/org/apache/solr/schema/SchemaField.java +++ b/solr/core/src/java/org/apache/solr/schema/SchemaField.java @@ -20,7 +20,6 @@ package org.apache.solr.schema; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.apache.lucene.document.Fieldable; -import org.apache.lucene.index.FieldInfo.IndexOptions; import org.apache.lucene.search.SortField; import org.apache.solr.search.QParser; @@ -83,15 +82,12 @@ public final class SchemaField extends FieldProperties { public boolean storeTermOffsets() { return (properties & STORE_TERMOFFSETS)!=0; } public boolean omitNorms() { return (properties & OMIT_NORMS)!=0; } - public IndexOptions indexOptions() { - if ((properties & OMIT_TF_POSITIONS) != 0) { - return IndexOptions.DOCS_ONLY; - } else if ((properties & OMIT_POSITIONS) != 0) { - return IndexOptions.DOCS_AND_FREQS; - } else { - return IndexOptions.DOCS_AND_FREQS_AND_POSITIONS; - } - } + /** @deprecated Use {@link #omitTermFreqAndPositions} */ + @Deprecated + public boolean omitTf() { return omitTermFreqAndPositions(); } + + public boolean omitTermFreqAndPositions() { return (properties & OMIT_TF_POSITIONS)!=0; } + public boolean omitPositions() { return (properties & OMIT_POSITIONS)!=0; } public boolean multiValued() { return (properties & MULTIVALUED)!=0; } public boolean sortMissingFirst() { return (properties & SORT_MISSING_FIRST)!=0; } diff --git a/solr/core/src/java/org/apache/solr/schema/TrieField.java b/solr/core/src/java/org/apache/solr/schema/TrieField.java index 2f72f7fda3f..a5e2d5b9a6e 100644 --- a/solr/core/src/java/org/apache/solr/schema/TrieField.java +++ b/solr/core/src/java/org/apache/solr/schema/TrieField.java @@ -522,7 +522,7 @@ public class TrieField extends FieldType { } f.setOmitNorms(field.omitNorms()); - f.setIndexOptions(field.indexOptions()); + f.setIndexOptions(getIndexOptions(field, value.toString())); f.setBoost(boost); return f; }