You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/01/09 18:31:16 UTC
svn commit: r1229268 [2/2] - in /lucene/dev/branches/branch_3x: lucene/
lucene/backwards/src/test/org/apache/lucene/index/
lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/query/
lucene/contrib/instantiated/src/java/org/apache/lucene...
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentMerger.java Mon Jan 9 17:31:15 2012
@@ -24,7 +24,6 @@ import java.util.List;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.FieldInfo.IndexOptions;
-import org.apache.lucene.index.IndexReader.FieldOption;
import org.apache.lucene.index.MergePolicy.MergeAbortedException;
import org.apache.lucene.index.PayloadProcessorProvider.PayloadProcessor;
import org.apache.lucene.store.Directory;
@@ -140,18 +139,6 @@ final class SegmentMerger {
return files;
}
- private static void addIndexed(IndexReader reader, FieldInfos fInfos,
- Collection<String> names, boolean storeTermVectors,
- boolean storePositionWithTermVector, boolean storeOffsetWithTermVector,
- boolean storePayloads, IndexOptions indexOptions)
- throws IOException {
- for (String field : names) {
- fInfos.add(field, true, storeTermVectors,
- storePositionWithTermVector, storeOffsetWithTermVector, !reader
- .hasNorms(field), storePayloads, indexOptions);
- }
- }
-
private SegmentReader[] matchingSegmentReaders;
private int[] rawDocLengths;
private int[] rawDocLengths2;
@@ -174,10 +161,15 @@ final class SegmentMerger {
// stored fields:
for (int i = 0; i < numReaders; i++) {
IndexReader reader = readers.get(i);
+ // TODO: we may be able to broaden this to
+ // non-SegmentReaders, since FieldInfos is now
+ // required? But... this'd also require exposing
+ // bulk-copy (TVs and stored fields) API in foreign
+ // readers..
if (reader instanceof SegmentReader) {
SegmentReader segmentReader = (SegmentReader) reader;
boolean same = true;
- FieldInfos segmentFieldInfos = segmentReader.fieldInfos();
+ FieldInfos segmentFieldInfos = segmentReader.getFieldInfos();
int numFieldInfos = segmentFieldInfos.size();
for (int j = 0; j < numFieldInfos; j++) {
if (!fieldInfos.fieldName(j).equals(segmentFieldInfos.fieldName(j))) {
@@ -206,24 +198,7 @@ final class SegmentMerger {
private int mergeFields() throws CorruptIndexException, IOException {
for (IndexReader reader : readers) {
- if (reader instanceof SegmentReader) {
- SegmentReader segmentReader = (SegmentReader) reader;
- FieldInfos readerFieldInfos = segmentReader.fieldInfos();
- int numReaderFieldInfos = readerFieldInfos.size();
- for (int j = 0; j < numReaderFieldInfos; j++) {
- fieldInfos.add(readerFieldInfos.fieldInfo(j));
- }
- } else {
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.TERMVECTOR_WITH_POSITION_OFFSET), true, true, true, false, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.TERMVECTOR_WITH_POSITION), true, true, false, false, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.TERMVECTOR_WITH_OFFSET), true, false, true, false, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.TERMVECTOR), true, false, false, false, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.OMIT_POSITIONS), false, false, false, false, IndexOptions.DOCS_AND_FREQS);
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.OMIT_TERM_FREQ_AND_POSITIONS), false, false, false, false, IndexOptions.DOCS_ONLY);
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.STORES_PAYLOADS), false, false, false, true, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
- addIndexed(reader, fieldInfos, reader.getFieldNames(FieldOption.INDEXED), false, false, false, false, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
- fieldInfos.add(reader.getFieldNames(FieldOption.UNINDEXED), false);
- }
+ fieldInfos.add(reader.getFieldInfos());
}
fieldInfos.write(directory, segment + ".fnm");
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentReader.java Mon Jan 9 17:31:15 2012
@@ -20,20 +20,16 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.FieldSelector;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.search.Similarity;
-import org.apache.lucene.index.FieldInfo.IndexOptions;
import org.apache.lucene.store.BufferedIndexInput;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexInput;
@@ -473,6 +469,12 @@ public class SegmentReader extends Index
return core.getTermsReader().terms(t);
}
+ @Override
+ public FieldInfos getFieldInfos() {
+ return core.fieldInfos;
+ }
+
+ // TODO: remove in 4.0
FieldInfos fieldInfos() {
return core.fieldInfos;
}
@@ -537,60 +539,6 @@ public class SegmentReader extends Index
return si.docCount;
}
- /**
- * @see IndexReader#getFieldNames(org.apache.lucene.index.IndexReader.FieldOption)
- */
- @Override
- public Collection<String> getFieldNames(IndexReader.FieldOption fieldOption) {
- ensureOpen();
-
- Set<String> fieldSet = new HashSet<String>();
- for (int i = 0; i < core.fieldInfos.size(); i++) {
- FieldInfo fi = core.fieldInfos.fieldInfo(i);
- if (fieldOption == IndexReader.FieldOption.ALL) {
- fieldSet.add(fi.name);
- }
- else if (!fi.isIndexed && fieldOption == IndexReader.FieldOption.UNINDEXED) {
- fieldSet.add(fi.name);
- }
- else if (fi.indexOptions == IndexOptions.DOCS_ONLY && fieldOption == IndexReader.FieldOption.OMIT_TERM_FREQ_AND_POSITIONS) {
- fieldSet.add(fi.name);
- }
- else if (fi.indexOptions == IndexOptions.DOCS_AND_FREQS && fieldOption == IndexReader.FieldOption.OMIT_POSITIONS) {
- fieldSet.add(fi.name);
- }
- else if (fi.storePayloads && fieldOption == IndexReader.FieldOption.STORES_PAYLOADS) {
- fieldSet.add(fi.name);
- }
- else if (fi.isIndexed && fieldOption == IndexReader.FieldOption.INDEXED) {
- fieldSet.add(fi.name);
- }
- else if (fi.isIndexed && fi.storeTermVector == false && fieldOption == IndexReader.FieldOption.INDEXED_NO_TERMVECTOR) {
- fieldSet.add(fi.name);
- }
- else if (fi.storeTermVector == true &&
- fi.storePositionWithTermVector == false &&
- fi.storeOffsetWithTermVector == false &&
- fieldOption == IndexReader.FieldOption.TERMVECTOR) {
- fieldSet.add(fi.name);
- }
- else if (fi.isIndexed && fi.storeTermVector && fieldOption == IndexReader.FieldOption.INDEXED_WITH_TERMVECTOR) {
- fieldSet.add(fi.name);
- }
- else if (fi.storePositionWithTermVector && fi.storeOffsetWithTermVector == false && fieldOption == IndexReader.FieldOption.TERMVECTOR_WITH_POSITION) {
- fieldSet.add(fi.name);
- }
- else if (fi.storeOffsetWithTermVector && fi.storePositionWithTermVector == false && fieldOption == IndexReader.FieldOption.TERMVECTOR_WITH_OFFSET) {
- fieldSet.add(fi.name);
- }
- else if ((fi.storeOffsetWithTermVector && fi.storePositionWithTermVector) &&
- fieldOption == IndexReader.FieldOption.TERMVECTOR_WITH_POSITION_OFFSET) {
- fieldSet.add(fi.name);
- }
- }
- return fieldSet;
- }
-
@Override
public boolean hasNorms(String field) {
ensureOpen();
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/util/ReaderUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/util/ReaderUtil.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/util/ReaderUtil.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/util/ReaderUtil.java Mon Jan 9 17:31:15 2012
@@ -19,8 +19,12 @@ package org.apache.lucene.util;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
+import org.apache.lucene.index.FieldInfo;
+import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.IndexReader;
/**
@@ -151,4 +155,26 @@ public final class ReaderUtil {
}
return hi;
}
+
+ public static Collection<String> getIndexedFields(IndexReader reader) {
+ final Collection<String> fields = new HashSet<String>();
+ for(FieldInfo fieldInfo : getMergedFieldInfos(reader)) {
+ if (fieldInfo.isIndexed) {
+ fields.add(fieldInfo.name);
+ }
+ }
+ return fields;
+ }
+
+ /** Call this to get the (merged) FieldInfos for a
+ * composite reader */
+ public static FieldInfos getMergedFieldInfos(IndexReader reader) {
+ final List<IndexReader> subReaders = new ArrayList<IndexReader>();
+ ReaderUtil.gatherSubReaders(subReaders, reader);
+ final FieldInfos fieldInfos = new FieldInfos();
+ for(IndexReader subReader : subReaders) {
+ fieldInfos.add(subReader.getFieldInfos());
+ }
+ return fieldInfos;
+ }
}
Modified: lucene/dev/branches/branch_3x/lucene/src/site/build/site/fileformats.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/site/build/site/fileformats.html?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/site/build/site/fileformats.html (original)
+++ lucene/dev/branches/branch_3x/lucene/src/site/build/site/fileformats.html Mon Jan 9 17:31:15 2012
@@ -1755,10 +1755,6 @@ document.write("Last Published: " + docu
without term vectors.
</li>
-<li>If the third lowest-order bit is set (0x04), term positions are stored with the term vectors.</li>
-
-<li>If the fourth lowest-order bit is set (0x08), term offsets are stored with the term vectors.</li>
-
<li>If the fifth lowest-order bit is set (0x10), norms are omitted for the indexed field.</li>
<li>If the sixth lowest-order bit is set (0x20), payloads are stored for the indexed field.</li>
@@ -1923,7 +1919,7 @@ document.write("Last Published: " + docu
</li>
</ol>
-<a name="N106F0"></a><a name="Term Dictionary"></a>
+<a name="N106EA"></a><a name="Term Dictionary"></a>
<h3 class="boxed">Term Dictionary</h3>
<p>
The term dictionary is represented as two files:
@@ -2115,7 +2111,7 @@ document.write("Last Published: " + docu
</li>
</ol>
-<a name="N10774"></a><a name="Frequencies"></a>
+<a name="N1076E"></a><a name="Frequencies"></a>
<h3 class="boxed">Frequencies</h3>
<p>
The .frq file contains the lists of documents
@@ -2243,7 +2239,7 @@ document.write("Last Published: " + docu
entry in level-1. In the example has entry 15 on level 1 a pointer to entry 15 on level 0 and entry 31 on level 1 a pointer
to entry 31 on level 0.
</p>
-<a name="N107FC"></a><a name="Positions"></a>
+<a name="N107F6"></a><a name="Positions"></a>
<h3 class="boxed">Positions</h3>
<p>
The .prx file contains the lists of positions that
@@ -2313,7 +2309,7 @@ document.write("Last Published: " + docu
Payload. If PayloadLength is not stored, then this Payload has the same
length as the Payload at the previous position.
</p>
-<a name="N10838"></a><a name="Normalization Factors"></a>
+<a name="N10832"></a><a name="Normalization Factors"></a>
<h3 class="boxed">Normalization Factors</h3>
<p>There's a single .nrm file containing all norms:
</p>
@@ -2393,7 +2389,7 @@ document.write("Last Published: " + docu
</p>
<p>Separate norm files are created (when adequate) for both compound and non compound segments.
</p>
-<a name="N10889"></a><a name="Term Vectors"></a>
+<a name="N10883"></a><a name="Term Vectors"></a>
<h3 class="boxed">Term Vectors</h3>
<p>
Term Vector support is an optional on a field by
@@ -2529,7 +2525,7 @@ document.write("Last Published: " + docu
</li>
</ol>
-<a name="N10925"></a><a name="Deleted Documents"></a>
+<a name="N1091F"></a><a name="Deleted Documents"></a>
<h3 class="boxed">Deleted Documents</h3>
<p>The .del file is
optional, and only exists when a segment contains deletions.
@@ -2593,7 +2589,7 @@ document.write("Last Published: " + docu
</div>
-<a name="N1095F"></a><a name="Limitations"></a>
+<a name="N10959"></a><a name="Limitations"></a>
<h2 class="boxed">Limitations</h2>
<div class="section">
<p>
Modified: lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/fileformats.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/fileformats.xml?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/fileformats.xml (original)
+++ lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/fileformats.xml Mon Jan 9 17:31:15 2012
@@ -1216,8 +1216,6 @@
bit is one for fields that have term vectors stored, and zero for fields
without term vectors.
</li>
- <li>If the third lowest-order bit is set (0x04), term positions are stored with the term vectors.</li>
- <li>If the fourth lowest-order bit is set (0x08), term offsets are stored with the term vectors.</li>
<li>If the fifth lowest-order bit is set (0x10), norms are omitted for the indexed field.</li>
<li>If the sixth lowest-order bit is set (0x20), payloads are stored for the indexed field.</li>
<li>If the seventh lowest-order bit is set (0x40), term frequencies and positions omitted for the indexed field.</li>
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestDocumentWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestDocumentWriter.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestDocumentWriter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestDocumentWriter.java Mon Jan 9 17:31:15 2012
@@ -321,7 +321,7 @@ public class TestDocumentWriter extends
_TestUtil.checkIndex(dir);
SegmentReader reader = SegmentReader.getOnlySegmentReader(dir);
- FieldInfos fi = reader.fieldInfos();
+ FieldInfos fi = reader.getFieldInfos();
// f1
assertFalse("f1 should have no norms", reader.hasNorms("f1"));
assertEquals("omitTermFreqAndPositions field bit should not be set for f1", IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f1").indexOptions);
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java Mon Jan 9 17:31:15 2012
@@ -92,24 +92,18 @@ public class TestFieldsReader extends Lu
assertTrue(field != null);
assertTrue(field.isTermVectorStored() == true);
- assertTrue(field.isStoreOffsetWithTermVector() == true);
- assertTrue(field.isStorePositionWithTermVector() == true);
assertTrue(field.getOmitNorms() == false);
assertTrue(field.getIndexOptions() == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
field = doc.getField(DocHelper.TEXT_FIELD_3_KEY);
assertTrue(field != null);
assertTrue(field.isTermVectorStored() == false);
- assertTrue(field.isStoreOffsetWithTermVector() == false);
- assertTrue(field.isStorePositionWithTermVector() == false);
assertTrue(field.getOmitNorms() == true);
assertTrue(field.getIndexOptions() == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
field = doc.getField(DocHelper.NO_TF_KEY);
assertTrue(field != null);
assertTrue(field.isTermVectorStored() == false);
- assertTrue(field.isStoreOffsetWithTermVector() == false);
- assertTrue(field.isStorePositionWithTermVector() == false);
assertTrue(field.getOmitNorms() == false);
assertTrue(field.getIndexOptions() == IndexOptions.DOCS_ONLY);
reader.close();
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexReader.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexReader.java Mon Jan 9 17:31:15 2012
@@ -38,7 +38,6 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldSelector;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.document.SetBasedFieldSelector;
-import org.apache.lucene.index.IndexReader.FieldOption;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.store.AlreadyClosedException;
@@ -47,6 +46,7 @@ import org.apache.lucene.store.LockObtai
import org.apache.lucene.store.LockReleaseFailedException;
import org.apache.lucene.store.NoSuchDirectoryException;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util._TestUtil;
public class TestIndexReader extends LuceneTestCase {
@@ -153,11 +153,11 @@ public class TestIndexReader extends Luc
writer.close();
// set up reader
IndexReader reader = IndexReader.open(d, false);
- Collection<String> fieldNames = reader.getFieldNames(IndexReader.FieldOption.ALL);
- assertTrue(fieldNames.contains("keyword"));
- assertTrue(fieldNames.contains("text"));
- assertTrue(fieldNames.contains("unindexed"));
- assertTrue(fieldNames.contains("unstored"));
+ FieldInfos fieldInfos = ReaderUtil.getMergedFieldInfos(reader);
+ assertNotNull(fieldInfos.fieldInfo("keyword"));
+ assertNotNull(fieldInfos.fieldInfo("text"));
+ assertNotNull(fieldInfos.fieldInfo("unindexed"));
+ assertNotNull(fieldInfos.fieldInfo("unstored"));
reader.close();
// add more documents
writer = new IndexWriter(
@@ -197,61 +197,66 @@ public class TestIndexReader extends Luc
}
writer.close();
+
// verify fields again
reader = IndexReader.open(d, false);
- fieldNames = reader.getFieldNames(IndexReader.FieldOption.ALL);
- assertEquals(13, fieldNames.size()); // the following fields
- assertTrue(fieldNames.contains("keyword"));
- assertTrue(fieldNames.contains("text"));
- assertTrue(fieldNames.contains("unindexed"));
- assertTrue(fieldNames.contains("unstored"));
- assertTrue(fieldNames.contains("keyword2"));
- assertTrue(fieldNames.contains("text2"));
- assertTrue(fieldNames.contains("unindexed2"));
- assertTrue(fieldNames.contains("unstored2"));
- assertTrue(fieldNames.contains("tvnot"));
- assertTrue(fieldNames.contains("termvector"));
- assertTrue(fieldNames.contains("tvposition"));
- assertTrue(fieldNames.contains("tvoffset"));
- assertTrue(fieldNames.contains("tvpositionoffset"));
+ fieldInfos = ReaderUtil.getMergedFieldInfos(reader);
+
+ Collection<String> allFieldNames = new HashSet<String>();
+ Collection<String> indexedFieldNames = new HashSet<String>();
+ Collection<String> notIndexedFieldNames = new HashSet<String>();
+ Collection<String> tvFieldNames = new HashSet<String>();
+
+ for(FieldInfo fieldInfo : fieldInfos) {
+ final String name = fieldInfo.name;
+ allFieldNames.add(name);
+ if (fieldInfo.isIndexed) {
+ indexedFieldNames.add(name);
+ } else {
+ notIndexedFieldNames.add(name);
+ }
+ if (fieldInfo.storeTermVector) {
+ tvFieldNames.add(name);
+ }
+ }
+
+ assertTrue(allFieldNames.contains("keyword"));
+ assertTrue(allFieldNames.contains("text"));
+ assertTrue(allFieldNames.contains("unindexed"));
+ assertTrue(allFieldNames.contains("unstored"));
+ assertTrue(allFieldNames.contains("keyword2"));
+ assertTrue(allFieldNames.contains("text2"));
+ assertTrue(allFieldNames.contains("unindexed2"));
+ assertTrue(allFieldNames.contains("unstored2"));
+ assertTrue(allFieldNames.contains("tvnot"));
+ assertTrue(allFieldNames.contains("termvector"));
+ assertTrue(allFieldNames.contains("tvposition"));
+ assertTrue(allFieldNames.contains("tvoffset"));
+ assertTrue(allFieldNames.contains("tvpositionoffset"));
// verify that only indexed fields were returned
- fieldNames = reader.getFieldNames(IndexReader.FieldOption.INDEXED);
- assertEquals(11, fieldNames.size()); // 6 original + the 5 termvector fields
- assertTrue(fieldNames.contains("keyword"));
- assertTrue(fieldNames.contains("text"));
- assertTrue(fieldNames.contains("unstored"));
- assertTrue(fieldNames.contains("keyword2"));
- assertTrue(fieldNames.contains("text2"));
- assertTrue(fieldNames.contains("unstored2"));
- assertTrue(fieldNames.contains("tvnot"));
- assertTrue(fieldNames.contains("termvector"));
- assertTrue(fieldNames.contains("tvposition"));
- assertTrue(fieldNames.contains("tvoffset"));
- assertTrue(fieldNames.contains("tvpositionoffset"));
+ assertEquals(11, indexedFieldNames.size()); // 6 original + the 5 termvector fields
+ assertTrue(indexedFieldNames.contains("keyword"));
+ assertTrue(indexedFieldNames.contains("text"));
+ assertTrue(indexedFieldNames.contains("unstored"));
+ assertTrue(indexedFieldNames.contains("keyword2"));
+ assertTrue(indexedFieldNames.contains("text2"));
+ assertTrue(indexedFieldNames.contains("unstored2"));
+ assertTrue(indexedFieldNames.contains("tvnot"));
+ assertTrue(indexedFieldNames.contains("termvector"));
+ assertTrue(indexedFieldNames.contains("tvposition"));
+ assertTrue(indexedFieldNames.contains("tvoffset"));
+ assertTrue(indexedFieldNames.contains("tvpositionoffset"));
// verify that only unindexed fields were returned
- fieldNames = reader.getFieldNames(IndexReader.FieldOption.UNINDEXED);
- assertEquals(2, fieldNames.size()); // the following fields
- assertTrue(fieldNames.contains("unindexed"));
- assertTrue(fieldNames.contains("unindexed2"));
+ assertEquals(2, notIndexedFieldNames.size()); // the following fields
+ assertTrue(notIndexedFieldNames.contains("unindexed"));
+ assertTrue(notIndexedFieldNames.contains("unindexed2"));
// verify index term vector fields
- fieldNames = reader.getFieldNames(IndexReader.FieldOption.TERMVECTOR);
- assertEquals(1, fieldNames.size()); // 1 field has term vector only
- assertTrue(fieldNames.contains("termvector"));
-
- fieldNames = reader.getFieldNames(IndexReader.FieldOption.TERMVECTOR_WITH_POSITION);
- assertEquals(1, fieldNames.size()); // 4 fields are indexed with term vectors
- assertTrue(fieldNames.contains("tvposition"));
-
- fieldNames = reader.getFieldNames(IndexReader.FieldOption.TERMVECTOR_WITH_OFFSET);
- assertEquals(1, fieldNames.size()); // 4 fields are indexed with term vectors
- assertTrue(fieldNames.contains("tvoffset"));
-
- fieldNames = reader.getFieldNames(IndexReader.FieldOption.TERMVECTOR_WITH_POSITION_OFFSET);
- assertEquals(1, fieldNames.size()); // 4 fields are indexed with term vectors
- assertTrue(fieldNames.contains("tvpositionoffset"));
+ assertEquals(tvFieldNames.toString(), 4, tvFieldNames.size()); // 4 field has term vector only
+ assertTrue(tvFieldNames.contains("termvector"));
+
reader.close();
d.close();
}
@@ -826,19 +831,19 @@ public class TestIndexReader extends Luc
}
// check field names
- Collection<String> fields1 = index1.getFieldNames(FieldOption.ALL);
- Collection<String> fields2 = index1.getFieldNames(FieldOption.ALL);
- assertEquals("IndexReaders have different numbers of fields.", fields1.size(), fields2.size());
- Iterator<String> it1 = fields1.iterator();
- Iterator<String> it2 = fields1.iterator();
- while (it1.hasNext()) {
- assertEquals("Different field names.", it1.next(), it2.next());
+ FieldInfos fieldInfos1 = ReaderUtil.getMergedFieldInfos(index1);
+ FieldInfos fieldInfos2 = ReaderUtil.getMergedFieldInfos(index2);
+ assertEquals("IndexReaders have different numbers of fields.", fieldInfos1.size(), fieldInfos2.size());
+ final int numFields = fieldInfos1.size();
+ for(int fieldID=0;fieldID<numFields;fieldID++) {
+ final FieldInfo fieldInfo1 = fieldInfos1.fieldInfo(fieldID);
+ final FieldInfo fieldInfo2 = fieldInfos2.fieldInfo(fieldID);
+ assertEquals("Different field names.", fieldInfo1.name, fieldInfo2.name);
}
// check norms
- it1 = fields1.iterator();
- while (it1.hasNext()) {
- String curField = it1.next();
+ for(FieldInfo fieldInfo : fieldInfos1) {
+ String curField = fieldInfo.name;
byte[] norms1 = index1.norms(curField);
byte[] norms2 = index2.norms(curField);
if (norms1 != null && norms2 != null)
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitPositions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitPositions.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitPositions.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitPositions.java Mon Jan 9 17:31:15 2012
@@ -162,7 +162,7 @@ public class TestOmitPositions extends L
writer.close();
SegmentReader reader = SegmentReader.getOnlySegmentReader(ram);
- FieldInfos fi = reader.fieldInfos();
+ FieldInfos fi = reader.getFieldInfos();
// docs + docs = docs
assertEquals(IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").indexOptions);
// docs + docs/freqs = docs
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitTf.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitTf.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitTf.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestOmitTf.java Mon Jan 9 17:31:15 2012
@@ -92,7 +92,7 @@ public class TestOmitTf extends LuceneTe
writer.close();
SegmentReader reader = SegmentReader.getOnlySegmentReader(ram);
- FieldInfos fi = reader.fieldInfos();
+ FieldInfos fi = reader.getFieldInfos();
assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").indexOptions);
assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
@@ -146,7 +146,7 @@ public class TestOmitTf extends LuceneTe
writer.close();
SegmentReader reader = SegmentReader.getOnlySegmentReader(ram);
- FieldInfos fi = reader.fieldInfos();
+ FieldInfos fi = reader.getFieldInfos();
assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f1").indexOptions);
assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
@@ -191,7 +191,7 @@ public class TestOmitTf extends LuceneTe
writer.close();
SegmentReader reader = SegmentReader.getOnlySegmentReader(ram);
- FieldInfos fi = reader.fieldInfos();
+ FieldInfos fi = reader.getFieldInfos();
assertEquals("OmitTermFreqAndPositions field bit should not be set.", IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f1").indexOptions);
assertEquals("OmitTermFreqAndPositions field bit should be set.", IndexOptions.DOCS_ONLY, fi.fieldInfo("f2").indexOptions);
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestParallelReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestParallelReader.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestParallelReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestParallelReader.java Mon Jan 9 17:31:15 2012
@@ -19,7 +19,6 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Random;
import org.apache.lucene.analysis.MockAnalyzer;
@@ -82,12 +81,12 @@ public class TestParallelReader extends
ParallelReader pr = new ParallelReader();
pr.add(IndexReader.open(dir1, false));
pr.add(IndexReader.open(dir2, false));
- Collection<String> fieldNames = pr.getFieldNames(IndexReader.FieldOption.ALL);
- assertEquals(4, fieldNames.size());
- assertTrue(fieldNames.contains("f1"));
- assertTrue(fieldNames.contains("f2"));
- assertTrue(fieldNames.contains("f3"));
- assertTrue(fieldNames.contains("f4"));
+ FieldInfos fieldInfos = pr.getFieldInfos();
+ assertEquals(4, fieldInfos.size());
+ assertNotNull(fieldInfos.fieldInfo("f1"));
+ assertNotNull(fieldInfos.fieldInfo("f2"));
+ assertNotNull(fieldInfos.fieldInfo("f3"));
+ assertNotNull(fieldInfos.fieldInfo("f4"));
pr.close();
dir1.close();
dir2.close();
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestPayloads.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestPayloads.java Mon Jan 9 17:31:15 2012
@@ -115,7 +115,7 @@ public class TestPayloads extends Lucene
writer.close();
SegmentReader reader = SegmentReader.getOnlySegmentReader(ram);
- FieldInfos fi = reader.fieldInfos();
+ FieldInfos fi = reader.getFieldInfos();
assertFalse("Payload field bit should not be set.", fi.fieldInfo("f1").storePayloads);
assertTrue("Payload field bit should be set.", fi.fieldInfo("f2").storePayloads);
assertFalse("Payload field bit should not be set.", fi.fieldInfo("f3").storePayloads);
@@ -140,7 +140,7 @@ public class TestPayloads extends Lucene
writer.close();
reader = SegmentReader.getOnlySegmentReader(ram);
- fi = reader.fieldInfos();
+ fi = reader.getFieldInfos();
assertFalse("Payload field bit should not be set.", fi.fieldInfo("f1").storePayloads);
assertTrue("Payload field bit should be set.", fi.fieldInfo("f2").storePayloads);
assertTrue("Payload field bit should be set.", fi.fieldInfo("f3").storePayloads);
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentMerger.java Mon Jan 9 17:31:15 2012
@@ -28,7 +28,6 @@ import org.apache.lucene.document.Field.
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import java.io.IOException;
-import java.util.Collection;
public class TestSegmentMerger extends LuceneTestCase {
//The variables for the new merged segment
@@ -102,10 +101,15 @@ public class TestSegmentMerger extends L
assertTrue(termDocs != null);
assertTrue(termDocs.next() == true);
- Collection<String> stored = mergedReader.getFieldNames(IndexReader.FieldOption.INDEXED_WITH_TERMVECTOR);
- assertTrue(stored != null);
+ int tvCount = 0;
+ for(FieldInfo fieldInfo : mergedReader.getFieldInfos()) {
+ if (fieldInfo.storeTermVector) {
+ tvCount++;
+ }
+ }
+
//System.out.println("stored size: " + stored.size());
- assertTrue("We do not have 3 fields that were indexed with term vector",stored.size() == 3);
+ assertEquals("We do not have 3 fields that were indexed with term vector", 3, tvCount);
TermFreqVector vector = mergedReader.getTermFreqVector(0, DocHelper.TEXT_FIELD_2_KEY);
assertTrue(vector != null);
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestSegmentReader.java Mon Jan 9 17:31:15 2012
@@ -19,15 +19,14 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.Collection;
-import java.util.Iterator;
+import java.util.HashSet;
import java.util.List;
-import org.apache.lucene.util.LuceneTestCase;
-
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.LuceneTestCase;
public class TestSegmentReader extends LuceneTestCase {
private Directory dir;
@@ -88,33 +87,42 @@ public class TestSegmentReader extends L
}
public void testGetFieldNameVariations() {
- Collection<String> result = reader.getFieldNames(IndexReader.FieldOption.ALL);
- assertTrue(result != null);
- assertTrue(result.size() == DocHelper.all.size());
- for (Iterator<String> iter = result.iterator(); iter.hasNext();) {
- String s = iter.next();
- //System.out.println("Name: " + s);
+ Collection<String> allFieldNames = new HashSet<String>();
+ Collection<String> indexedFieldNames = new HashSet<String>();
+ Collection<String> notIndexedFieldNames = new HashSet<String>();
+ Collection<String> tvFieldNames = new HashSet<String>();
+ Collection<String> noTVFieldNames = new HashSet<String>();
+
+ for(FieldInfo fieldInfo : reader.getFieldInfos()) {
+ final String name = fieldInfo.name;
+ allFieldNames.add(name);
+ if (fieldInfo.isIndexed) {
+ indexedFieldNames.add(name);
+ } else {
+ notIndexedFieldNames.add(name);
+ }
+ if (fieldInfo.storeTermVector) {
+ tvFieldNames.add(name);
+ } else if (fieldInfo.isIndexed) {
+ noTVFieldNames.add(name);
+ }
+ }
+
+ assertTrue(allFieldNames.size() == DocHelper.all.size());
+ for (String s : allFieldNames) {
assertTrue(DocHelper.nameValues.containsKey(s) == true || s.equals(""));
}
- result = reader.getFieldNames(IndexReader.FieldOption.INDEXED);
- assertTrue(result != null);
- assertTrue(result.size() == DocHelper.indexed.size());
- for (Iterator<String> iter = result.iterator(); iter.hasNext();) {
- String s = iter.next();
+
+ assertTrue(indexedFieldNames.size() == DocHelper.indexed.size());
+ for (String s : indexedFieldNames) {
assertTrue(DocHelper.indexed.containsKey(s) == true || s.equals(""));
}
- result = reader.getFieldNames(IndexReader.FieldOption.UNINDEXED);
- assertTrue(result != null);
- assertTrue(result.size() == DocHelper.unindexed.size());
+ assertTrue(notIndexedFieldNames.size() == DocHelper.unindexed.size());
//Get all indexed fields that are storing term vectors
- result = reader.getFieldNames(IndexReader.FieldOption.INDEXED_WITH_TERMVECTOR);
- assertTrue(result != null);
- assertTrue(result.size() == DocHelper.termvector.size());
-
- result = reader.getFieldNames(IndexReader.FieldOption.INDEXED_NO_TERMVECTOR);
- assertTrue(result != null);
- assertTrue(result.size() == DocHelper.notermvector.size());
+ assertTrue(tvFieldNames.size() == DocHelper.termvector.size());
+
+ assertTrue(noTVFieldNames.size() == DocHelper.notermvector.size());
}
public void testTerms() throws IOException {
Modified: lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java (original)
+++ lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java Mon Jan 9 17:31:15 2012
@@ -292,10 +292,14 @@ public class LukeRequestHandler extends
IndexReader reader = searcher.getReader();
IndexSchema schema = searcher.getSchema();
-
+
+ Set<String> fieldNames = new TreeSet<String>();
+ for(FieldInfo fieldInfo : reader.getFieldInfos()) {
+ fieldNames.add(fieldInfo.name);
+ }
+
// Walk the term enum and keep a priority queue for each map in our set
SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<Object>();
- Set<String> fieldNames = new TreeSet<String>(reader.getFieldNames(IndexReader.FieldOption.ALL));
for (String fieldName : fieldNames) {
if( fields != null && !fields.contains( fieldName ) ) {
continue; // if a field is specified, only them
Modified: lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexReader.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexReader.java (original)
+++ lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexReader.java Mon Jan 9 17:31:15 2012
@@ -18,17 +18,16 @@
package org.apache.solr.search;
-import org.apache.lucene.index.*;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.LockObtainFailedException;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.FieldSelector;
-
import java.io.IOException;
-import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.FieldSelector;
+import org.apache.lucene.index.*;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.ReaderUtil;
+
/** Solr wrapper for IndexReader that contains extra context.
* This is currently experimental, for internal use only, and subject to change.
*/
@@ -340,8 +339,8 @@ public class SolrIndexReader extends Fil
}
@Override
- public Collection getFieldNames(IndexReader.FieldOption fieldNames) {
- return in.getFieldNames(fieldNames);
+ public FieldInfos getFieldInfos() {
+ return ReaderUtil.getMergedFieldInfos(in);
}
@Override
Modified: lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java Mon Jan 9 17:31:15 2012
@@ -17,7 +17,13 @@
package org.apache.solr.search;
+import java.io.IOException;
+import java.net.URL;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicLong;
+
import org.apache.lucene.document.*;
+import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;
@@ -25,20 +31,16 @@ import org.apache.lucene.index.TermEnum;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.OpenBitSet;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.SolrConfig;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrInfoMBean;
+import org.apache.solr.request.UnInvertedField;
import org.apache.solr.schema.IndexSchema;
import org.apache.solr.schema.SchemaField;
-import org.apache.solr.request.UnInvertedField;
-import org.apache.lucene.util.OpenBitSet;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicLong;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -196,7 +198,10 @@ public class SolrIndexSearcher extends I
}
optimizer = solrConfig.filtOptEnabled ? new LuceneQueryOptimizer(solrConfig.filtOptCacheSize,solrConfig.filtOptThreshold) : null;
- fieldNames = r.getFieldNames(IndexReader.FieldOption.ALL);
+ fieldNames = new HashSet<String>();
+ for(FieldInfo fieldInfo : ReaderUtil.getMergedFieldInfos(r)) {
+ fieldNames.add(fieldInfo.name);
+ }
// do this at the end since an exception in the constructor means we won't close
numOpens.incrementAndGet();
Modified: lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/tst/TestRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/tst/TestRequestHandler.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/tst/TestRequestHandler.java (original)
+++ lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/tst/TestRequestHandler.java Mon Jan 9 17:31:15 2012
@@ -17,26 +17,25 @@
package org.apache.solr.tst;
-import org.apache.lucene.search.*;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexReader;
-
+import java.net.URL;
import java.util.*;
import java.util.regex.Pattern;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.net.URL;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.index.FieldInfo;
+import org.apache.lucene.search.*;
import org.apache.lucene.util.OpenBitSet;
-import org.apache.solr.search.*;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrCore;
-import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.search.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @version $Id$
@@ -156,10 +155,19 @@ public class TestRequestHandler implemen
rsp.add("myNamedList", nl);
} else if (qs.startsWith("fields")) {
NamedList nl = new NamedList();
- Collection flst;
- flst = searcher.getReader().getFieldNames(IndexReader.FieldOption.INDEXED);
+ Collection<String> flst = new HashSet<String>();
+ for(FieldInfo fieldInfo : searcher.getReader().getFieldInfos()) {
+ if (fieldInfo.isIndexed) {
+ flst.add(fieldInfo.name);
+ }
+ }
nl.add("indexed",flst);
- flst = searcher.getReader().getFieldNames(IndexReader.FieldOption.UNINDEXED);
+ flst = new HashSet<String>();
+ for(FieldInfo fieldInfo : searcher.getReader().getFieldInfos()) {
+ if (!fieldInfo.isIndexed) {
+ flst.add(fieldInfo.name);
+ }
+ }
nl.add("unindexed",flst);
rsp.add("fields", nl);
}
Modified: lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/search/TestDocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/search/TestDocSet.java?rev=1229268&r1=1229267&r2=1229268&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/search/TestDocSet.java (original)
+++ lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/search/TestDocSet.java Mon Jan 9 17:31:15 2012
@@ -17,19 +17,20 @@
package org.apache.solr.search;
-import java.util.Random;
-import java.util.Arrays;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.Random;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.OpenBitSet;
-import org.apache.lucene.util.OpenBitSetIterator;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.FilterIndexReader;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.MultiReader;
-import org.apache.lucene.search.Filter;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
+import org.apache.lucene.search.Filter;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.OpenBitSet;
+import org.apache.lucene.util.OpenBitSetIterator;
/**
* @version $Id$
@@ -350,6 +351,11 @@ public class TestDocSet extends LuceneTe
public IndexReader[] getSequentialSubReaders() {
return null;
}
+
+ @Override
+ public FieldInfos getFieldInfos() {
+ return new FieldInfos();
+ }
};
return r;
}