You can store TermVectors with position info, but I don't think this would be enough for what you are asking, because it is not meant for direct access to a term by its position, and because TermVectors store tokens, i.e. the "indexed" form of the word, which I am not sure is what you need.
It seems doable by the following: (1) store the field with the document - see http://lucene.apache.org/java/docs/api/org/apache/lucene/document/Field.Store.html#YES (2) store term vectors with offsets - see http://lucene.apache.org/java/docs/api/org/apache/lucene/document/Field.TermVector.html#WITH_OFFSETS (3) access the TermVector of a document by docid - see http://lucene.apache.org/java/docs/api/org/apache/lucene/index/IndexReader.html#getTermFreqVector(int, java.lang.String) and http://lucene.apache.org/java/docs/api/org/apache/lucene/index/TermPositionVector.html (4) Use the offset info to extract the relevant part of the original text from the field, iterating backwards and forwards for a whitespace or so - see http://lucene.apache.org/java/docs/api/org/apache/lucene/index/IndexReader.html#document(int, org.apache.lucene.document.FieldSelector) All this seems a lot of work, and I am also not sure about the result performance - the index size would grow due to both TermVectors and the stored field. If the field content for each doc is also stored in another store (say, db) then this is less of a concern, but still, lots of work, and measureable extra IO (in addition to search) if this is part of a search application. Perhaps you can expand on the context of this? How is this feature going to be used? "Renzo Scheffer" <[EMAIL PROTECTED]> wrote on 02/10/2006 14:06:40: > Hi, > > > > can anybody be so kind to tell me if it is possible to search a Term by its > position? > > > > I search a term (for excample "soccer") and get back the DocId's and > positions as follows: > > > > > > TermPositions termPos = reader.termPositions(new Term("contents","soccer")); > > while(termPos.next()){ > > int freq = termPos.freq(); > > for(int i=0; i<freq; i++){ > > > > int docNumber = termPos.doc(); > > int position = termPos.nextPosition(); > > System.out.println("DocId: "+docNumber+"; Pos:"+position); > > } > > > > > > > > Output: > > > > DocId: 0; Pos: 1 > > DocId: 0; Pos: 4 > > DocId: 0; Pos: 7 > > DocId: 1; Pos: 3 > > DocId: 1; Pos: 7 > > > > Now I try to get back terms, one position before/after "soccer". I > considered to take the > > Position and increase or decrease it. But I can't find a way to get back a > term, according to the given Position. > > Can anybody help me? > > > > Thanks, Renzo --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]