lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Grant Ingersoll" <>
Subject IndexReader.document(int) question/bug
Date Thu, 20 May 2004 15:18:20 GMT
Hi All,

Was doing some tests on my system, retrieving documents based on the document id.  I was testing
the negative case where I passed in an invalid id (which, admittedly, would be hard to do
b/c of other protections in my code, but...) to IndexReader.document() and I was getting back
a valid document, namely the 0th document in the index.

Here is the test case for IndexReader that I tried:

public void testDocument() throws IOException    {
        RAMDirectory d = new RAMDirectory();
        // set up writer
        IndexWriter writer = new IndexWriter(d, new StandardAnalyzer(), true);
        // set up reader
        IndexReader reader =;
        Document doc = reader.document(0);
        assertTrue(doc != null); //works
        assertTrue(doc.getField("keyword").stringValue().equals("test1")); //works

            doc = reader.document(1000000000);
        catch (IOException e)
            assertTrue(true); //works
        doc = reader.document(1000);
        assertTrue(doc == null);         // !!!!!!!!!!!! This fails

The documentation does not say what should happen when _n_ is not a valid document number,
however, I wouldn't expect it to return a valid document. The issue is that the document()
method does not fail gracefully in my opinion.

I am not 100% sure of the issue, but it appears to stem from the FieldsReader.doc code in
that somehow the position gets set to 0.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message