I created an index using Lucene 3.6.0 in which I specified that a certain text 
field in each document should be indexed, stored, analyzed with no norms, with 
term vectors, offsets and positions. Later I looked at that index in Luke, and 
it said that term vectors were created for this field, but offsets and 
positions were not. The code I used for indexing couldn't be simpler. It looks 
like this for the relevant field:

doc.add(new Field("ReportText", reportTextContents, Field.Store.YES, 
Field.Index.ANALYZED_NO_NORMS, Field.TermVector.WITH_POSITIONS_OFFSETS);

The indexer adds these documents to the index and commits them. I ran the 
indexer in a debugger and watched the Lucene code set the Field instance 
variables called storeTermVector, storeOffsetWithTermVector and 
storePositionWithTermVector to true for this field.

When the indexing was done, I ran a simple program in a debugger that opens an 
index, reads each document and writes out its information as XML. The values of 
storeOffsetWithTermVector and storePositionWithTermVector in the ReportText 
Field objects were false. Is there something other than specifying 
Field.TermVector.WITH_POSITIONS_OFFSETS when constructing a Field that needs to 
be done in order for offsets and positions to be saved in the index? Or are 
there circumstances under which the Field.TermVector setting for a Field object 
is ignored? This doesn't make sense to me, and I could swear that offsets and 
positions were being saved in some older indexes I created that I unfortunately 
no longer have around for comparison. I'm sure that I am just overlooking 
something or have made some kind of mistake, but I can't see what it is at the 
moment. Thanks for any help or advice you can give me.
Mike

Reply via email to