On Nov 20, 2003, at 14:34, Eric Jain wrote:


I see. Assuming I have the relevant terms for a given document, how
would a build a new document based on those terms? Something like
adding each term's field and text to the new document?

Yes.

Ok. Retrieving the term for a document turns out to be pretty straightforward, but building a new document turns out to be slightly more convoluted than expected... I basically need to know which kind of field to create (Stored, Indexed, Tokenized), but this information doesn't seem to be available in the document I'm trying to clone. I thought I could use the original Document's getField() method to retrieve this information, but aside from the Keyword field, none of the other fields are available... where can I get this info at this stage?


Here is the problematic method for cloning a document:

private Document cloneDocumentWithTerms(final Document aDocument, final Collection someTerms)
{
if ( aDocument != null )
{
if ( someTerms != null )
{
Document anotherDocument = new Document();

anotherDocument.setBoost( aDocument.getBoost() );

for ( Iterator anIterator = someTerms.iterator(); anIterator.hasNext(); )
{
Term aTerm = (Term) anIterator.next();
String aKey = aTerm.field();
String aValue = aTerm.text();
Field aField = aDocument.getField( aKey );
boolean isStored = aField.isStored();
boolean isIndexed = aField.isIndexed();
boolean isTokenized = aField.isTokenized();
Field anotherField = new Field( aKey, aValue, isStored, isIndexed, isTokenized );

anotherField.setBoost( aField.getBoost() );

anotherDocument.add( anotherField );
}

return anotherDocument;
}


throw new IllegalArgumentException( "Index.cloneDocumentWithTerms: null terms." );
}


throw new IllegalArgumentException( "Index.cloneDocumentWithTerms: null document." );
}


The problem is that aDocument.getField( aKey ) returns null most of the time. What gives?

TIA.

PA.


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to