? src/test/org/apache/lucene/index/TestIndexReader.java
Index: src/java/org/apache/lucene/index/IndexReader.java
===================================================================
RCS file: /home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/index/IndexReader.java,v
retrieving revision 1.11
diff -u -c -r1.11 IndexReader.java
*** src/java/org/apache/lucene/index/IndexReader.java 7 Nov 2002 05:55:39 -0000 1.11
--- src/java/org/apache/lucene/index/IndexReader.java 12 Nov 2002 20:11:20 -0000
***************
*** 56,61 ****
--- 56,63 ----
import java.io.IOException;
import java.io.File;
+ import java.util.Collection;
+
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.Lock;
***************
*** 301,306 ****
--- 303,316 ----
writeLock = null;
}
}
+
+ /**
+ * Return a list of all unique field names which exist in the index pointed to by
+ * this IndexReader.
+ * @return Collection of Strings indicating the names of the fields
+ * @throws IOException if there is a problem with accessing the index
+ */
+ public abstract Collection getFieldNames() throws IOException;
/**
* Returns true iff the index in the named directory is
Index: src/java/org/apache/lucene/index/SegmentReader.java
===================================================================
RCS file: /home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/index/SegmentReader.java,v
retrieving revision 1.6
diff -u -c -r1.6 SegmentReader.java
*** src/java/org/apache/lucene/index/SegmentReader.java 7 Nov 2002 05:55:39 -0000 1.6
--- src/java/org/apache/lucene/index/SegmentReader.java 12 Nov 2002 20:11:20 -0000
***************
*** 55,69 ****
*/
import java.io.IOException;
! import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Vector;
- import org.apache.lucene.util.BitVector;
- import org.apache.lucene.store.Directory;
- import org.apache.lucene.store.Lock;
- import org.apache.lucene.store.InputStream;
import org.apache.lucene.document.Document;
final class SegmentReader extends IndexReader {
private boolean closeDirectory = false;
--- 55,71 ----
*/
import java.io.IOException;
! import java.util.Collection;
import java.util.Enumeration;
+ import java.util.HashSet;
+ import java.util.Hashtable;
+ import java.util.Set;
import java.util.Vector;
import org.apache.lucene.document.Document;
+ import org.apache.lucene.store.InputStream;
+ import org.apache.lucene.store.Lock;
+ import org.apache.lucene.util.BitVector;
final class SegmentReader extends IndexReader {
private boolean closeDirectory = false;
***************
*** 73,79 ****
private FieldsReader fieldsReader;
TermInfosReader tis;
!
BitVector deletedDocs = null;
private boolean deletedDocsDirty = false;
--- 75,81 ----
private FieldsReader fieldsReader;
TermInfosReader tis;
!
BitVector deletedDocs = null;
private boolean deletedDocsDirty = false;
***************
*** 113,119 ****
proxStream = directory.openFile(segment + ".prx");
openNorms();
}
!
final synchronized void doClose() throws IOException {
if (deletedDocsDirty) {
synchronized (directory) { // in- & inter-process sync
--- 115,121 ----
proxStream = directory.openFile(segment + ".prx");
openNorms();
}
!
final synchronized void doClose() throws IOException {
if (deletedDocsDirty) {
synchronized (directory) { // in- & inter-process sync
***************
*** 256,262 ****
private final void openNorms() throws IOException {
for (int i = 0; i < fieldInfos.size(); i++) {
FieldInfo fi = fieldInfos.fieldInfo(i);
! if (fi.isIndexed)
norms.put(fi.name,
new Norm(directory.openFile(segment + ".f" + fi.number)));
}
--- 258,264 ----
private final void openNorms() throws IOException {
for (int i = 0; i < fieldInfos.size(); i++) {
FieldInfo fi = fieldInfos.fieldInfo(i);
! if (fi.isIndexed)
norms.put(fi.name,
new Norm(directory.openFile(segment + ".f" + fi.number)));
}
***************
*** 271,274 ****
--- 273,287 ----
}
}
}
+
+ // javadoc inherited
+ public Collection getFieldNames() throws IOException {
+ // maintain a unique set of field names
+ Set fieldSet = new HashSet();
+ for (int i = 0; i < fieldInfos.size(); i++) {
+ FieldInfo fi = fieldInfos.fieldInfo(i);
+ fieldSet.add(fi.name);
+ }
+ return fieldSet;
+ }
}
Index: src/java/org/apache/lucene/index/SegmentsReader.java
===================================================================
RCS file: /home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/index/SegmentsReader.java,v
retrieving revision 1.9
diff -u -c -r1.9 SegmentsReader.java
*** src/java/org/apache/lucene/index/SegmentsReader.java 7 Nov 2002 05:55:39 -0000 1.9
--- src/java/org/apache/lucene/index/SegmentsReader.java 12 Nov 2002 20:11:20 -0000
***************
*** 55,64 ****
*/
import java.io.IOException;
import java.util.Hashtable;
- import org.apache.lucene.store.Directory;
import org.apache.lucene.document.Document;
/**
* FIXME: Describe class SegmentsReader here.
--- 55,68 ----
*/
import java.io.IOException;
+ import java.util.Collection;
+ import java.util.HashSet;
import java.util.Hashtable;
+ import java.util.Iterator;
+ import java.util.Set;
import org.apache.lucene.document.Document;
+ import org.apache.lucene.store.Directory;
/**
* FIXME: Describe class SegmentsReader here.
***************
*** 174,179 ****
--- 178,199 ----
for (int i = 0; i < readers.length; i++)
readers[i].close();
}
+
+ // javadoc inherited
+ public Collection getFieldNames() throws IOException {
+ // maintain a unique set of field names
+ Set fieldSet = new HashSet();
+ for (int i = 0; i < readers.length; i++) {
+ SegmentReader reader = readers[i];
+ Collection names = reader.getFieldNames();
+ // iterate through the field names and add them to the set
+ for (Iterator iterator = names.iterator(); iterator.hasNext();) {
+ String s = (String) iterator.next();
+ fieldSet.add(s);
+ }
+ }
+ return fieldSet;
+ }
}
class SegmentsTermEnum extends TermEnum {