Uh-oh: I think this happened as part of LUCENE-843, which landed in 2.3.

IndexWriter now first collates each Field instance, by name, and then
visits those fields in sorted order.  Multiple instances of the same
field name are written in the order that they appeared in the
document.

StoredFieldsWriter taps in to the indexing chain after that per-field collation.

But, if getting back to this is important, we should be able to move
StoredFieldsWriter up in the chain so that it visits the original
document, instead.  Offhand, I'm not sure if there are any tradeoffs
in doing that.

Mike

On Tue, Mar 31, 2009 at 9:30 AM, Grant Ingersoll <gsing...@apache.org> wrote:
> Has the way fields get added changed recently?
>  http://www.lucidimagination.com/search/document/954555c478002a3/empty_sinktokenizer
>
> See also:
> http://www.lucidimagination.com/search/document/274ec8c1c56fdd54/order_of_field_objects_within_document#5ffce4509ed32511
>
> http://www.lucidimagination.com/search/document/d6b19ab1bd87e30a/order_of_fields_returned_by_document_getfields#d6b19ab1bd87e30a
>
> http://www.lucidimagination.com/search/document/deda4dd3f9041bee/the_order_of_fields_in_document_fields#bb26d84091aebcaa
>
>
> The following little program confirms that they are indeed in alpha order
> now and not in added order:
> public class TestFieldOrdering extends LuceneTestCase {
>  protected RAMDirectory dir;
>
>  protected void setUp() throws Exception {
>    super.setUp();
>    dir = new RAMDirectory();
>
>  }
>
>  public void testAddFields() throws Exception {
>    IndexWriter writer = new IndexWriter(dir, new SimpleAnalyzer(), true,
> IndexWriter.MaxFieldLength.LIMITED);
>
>    Document doc = new Document();
>    doc.add(new Field("id", "one", Field.Store.YES, Field.Index.NO));
>    doc.add(new Field("z", "document z", Field.Store.YES,
> Field.Index.ANALYZED));
>    doc.add(new Field("a", "document a", Field.Store.YES,
> Field.Index.ANALYZED));
>    doc.add(new Field("e", "document e", Field.Store.YES,
> Field.Index.ANALYZED));
>    doc.add(new Field("b", "document b", Field.Store.YES,
> Field.Index.ANALYZED));
>    writer.addDocument(doc);
>    writer.close();
>    IndexReader reader = IndexReader.open(dir);
>    Document retreived = reader.document(0);
>    assertTrue("retreived is null and it shouldn't be", retreived != null);
>    List fields = retreived.getFields();
>    for (Iterator iterator = fields.iterator(); iterator.hasNext();) {
>      Field name = (Field) iterator.next();
>      System.out.println("Name: " + name);
>    }
>  }
>
> }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-dev-h...@lucene.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to