mirror of https://github.com/apache/lucene.git
revert Document.getFields for back compatibility: LUCENE-609
git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@416090 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3ff810c0f2
commit
e2c8931219
|
@ -21,6 +21,10 @@ API Changes
|
|||
and is supposed to be replaced with the WordlistLoader class in
|
||||
package org.apache.lucene.analysis (Daniel Naber)
|
||||
|
||||
10. LUCENE-609: Revert return type of Document.getField(s) to Field
|
||||
for backward compatibility, added new Document.getFieldable(s)
|
||||
for access to new lazy loaded fields. (Yonik Seeley)
|
||||
|
||||
Bug fixes
|
||||
|
||||
1. Fixed the web application demo (built with "ant war-demo") which
|
||||
|
@ -51,7 +55,7 @@ Bug fixes
|
|||
9. LUCENE-415: A previously unclean shutdown during indexing can cause
|
||||
a non-empty segment file to be re-used, causing index corruption.
|
||||
(Andy Hind via Yonik Seeley)
|
||||
|
||||
|
||||
Optimizations
|
||||
|
||||
1. LUCENE-586: TermDocs.skipTo() is now more efficient for multi-segment
|
||||
|
|
|
@ -129,16 +129,31 @@ public final class Document implements java.io.Serializable {
|
|||
/** Returns a field with the given name if any exist in this document, or
|
||||
* null. If multiple fields exists with this name, this method returns the
|
||||
* first value added.
|
||||
* Do not use this method with lazy loaded fields.
|
||||
*/
|
||||
public final Fieldable getField(String name) {
|
||||
public final Field getField(String name) {
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
Fieldable field = (Fieldable)fields.get(i);
|
||||
Field field = (Field)fields.get(i);
|
||||
if (field.name().equals(name))
|
||||
return field;
|
||||
return field;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/** Returns a field with the given name if any exist in this document, or
|
||||
* null. If multiple fields exists with this name, this method returns the
|
||||
* first value added.
|
||||
*/
|
||||
public Fieldable getFieldable(String name) {
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
Fieldable field = (Fieldable)fields.get(i);
|
||||
if (field.name().equals(name))
|
||||
return field;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Returns the string value of the field with the given name if any exist in
|
||||
* this document, or null. If multiple fields exist with this name, this
|
||||
* method returns the first value added. If only binary fields with this name
|
||||
|
@ -158,6 +173,30 @@ public final class Document implements java.io.Serializable {
|
|||
return ((Vector)fields).elements();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of {@link Field}s with the given name.
|
||||
* This method can return <code>null</code>.
|
||||
* Do not use with lazy loaded fields.
|
||||
*
|
||||
* @param name the name of the field
|
||||
* @return a <code>Field[]</code> array
|
||||
*/
|
||||
public final Field[] getFields(String name) {
|
||||
List result = new ArrayList();
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
Field field = (Field)fields.get(i);
|
||||
if (field.name().equals(name)) {
|
||||
result.add(field);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.size() == 0)
|
||||
return null;
|
||||
|
||||
return (Field[])result.toArray(new Field[result.size()]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns an array of {@link Fieldable}s with the given name.
|
||||
* This method can return <code>null</code>.
|
||||
|
@ -165,7 +204,7 @@ public final class Document implements java.io.Serializable {
|
|||
* @param name the name of the field
|
||||
* @return a <code>Fieldable[]</code> array
|
||||
*/
|
||||
public final Fieldable[] getFields(String name) {
|
||||
public Fieldable[] getFieldables(String name) {
|
||||
List result = new ArrayList();
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
Fieldable field = (Fieldable)fields.get(i);
|
||||
|
@ -180,6 +219,7 @@ public final class Document implements java.io.Serializable {
|
|||
return (Fieldable[])result.toArray(new Fieldable[result.size()]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns an array of values of the field specified as the method parameter.
|
||||
* This method can return <code>null</code>.
|
||||
|
|
|
@ -97,26 +97,26 @@ public class TestFieldsReader extends TestCase {
|
|||
SetBasedFieldSelector fieldSelector = new SetBasedFieldSelector(loadFieldNames, lazyFieldNames);
|
||||
Document doc = reader.doc(0, fieldSelector);
|
||||
assertTrue("doc is null and it shouldn't be", doc != null);
|
||||
Fieldable field = doc.getField(DocHelper.LAZY_FIELD_KEY);
|
||||
Fieldable field = doc.getFieldable(DocHelper.LAZY_FIELD_KEY);
|
||||
assertTrue("field is null and it shouldn't be", field != null);
|
||||
assertTrue("field is not lazy and it should be", field.isLazy());
|
||||
String value = field.stringValue();
|
||||
assertTrue("value is null and it shouldn't be", value != null);
|
||||
assertTrue(value + " is not equal to " + DocHelper.LAZY_FIELD_TEXT, value.equals(DocHelper.LAZY_FIELD_TEXT) == true);
|
||||
field = doc.getField(DocHelper.TEXT_FIELD_1_KEY);
|
||||
field = doc.getFieldable(DocHelper.TEXT_FIELD_1_KEY);
|
||||
assertTrue("field is null and it shouldn't be", field != null);
|
||||
assertTrue("Field is lazy and it should not be", field.isLazy() == false);
|
||||
field = doc.getField(DocHelper.TEXT_FIELD_UTF1_KEY);
|
||||
field = doc.getFieldable(DocHelper.TEXT_FIELD_UTF1_KEY);
|
||||
assertTrue("field is null and it shouldn't be", field != null);
|
||||
assertTrue("Field is lazy and it should not be", field.isLazy() == false);
|
||||
assertTrue(field.stringValue() + " is not equal to " + DocHelper.FIELD_UTF1_TEXT, field.stringValue().equals(DocHelper.FIELD_UTF1_TEXT) == true);
|
||||
|
||||
field = doc.getField(DocHelper.TEXT_FIELD_UTF2_KEY);
|
||||
field = doc.getFieldable(DocHelper.TEXT_FIELD_UTF2_KEY);
|
||||
assertTrue("field is null and it shouldn't be", field != null);
|
||||
assertTrue("Field is lazy and it should not be", field.isLazy() == true);
|
||||
assertTrue(field.stringValue() + " is not equal to " + DocHelper.FIELD_UTF2_TEXT, field.stringValue().equals(DocHelper.FIELD_UTF2_TEXT) == true);
|
||||
|
||||
field = doc.getField(DocHelper.LAZY_FIELD_BINARY_KEY);
|
||||
field = doc.getFieldable(DocHelper.LAZY_FIELD_BINARY_KEY);
|
||||
assertTrue("field is null and it shouldn't be", field != null);
|
||||
byte [] bytes = field.binaryValue();
|
||||
assertTrue("bytes is null and it shouldn't be", bytes != null);
|
||||
|
@ -182,7 +182,7 @@ public class TestFieldsReader extends TestCase {
|
|||
Document doc;
|
||||
doc = reader.doc(0, null);//Load all of them
|
||||
assertTrue("doc is null and it shouldn't be", doc != null);
|
||||
Fieldable field = doc.getField(DocHelper.LARGE_LAZY_FIELD_KEY);
|
||||
Fieldable field = doc.getFieldable(DocHelper.LARGE_LAZY_FIELD_KEY);
|
||||
assertTrue("field is lazy", field.isLazy() == false);
|
||||
String value;
|
||||
long start;
|
||||
|
@ -201,7 +201,7 @@ public class TestFieldsReader extends TestCase {
|
|||
System.gc();
|
||||
reader = new FieldsReader(tmpDir, "test", fieldInfos);
|
||||
doc = reader.doc(0, fieldSelector);
|
||||
field = doc.getField(DocHelper.LARGE_LAZY_FIELD_KEY);
|
||||
field = doc.getFieldable(DocHelper.LARGE_LAZY_FIELD_KEY);
|
||||
assertTrue("field is not lazy", field.isLazy() == true);
|
||||
start = System.currentTimeMillis();
|
||||
//On my machine this took around 50 - 70ms
|
||||
|
|
Loading…
Reference in New Issue