Re-open doens't work, but open does.

@Test
    public void testUpdate() throws IOException,
ParserConfigurationException, SAXException, ParseException {
        Analyzer analyzer = getAnalyzer();
        QueryParser parser = new QueryParser(Version.LUCENE_32, content,
analyzer);
        Query allQ = parser.parse("*:*");

        IndexWriter writer = getWriter();
        final IndexReader indexReader = IndexReader.open(writer, true);

        IndexSearcher searcher = new IndexSearcher(indexReader);
        TopDocs docs = searcher.search(allQ, 10);
        assertEquals(0, docs.totalHits); // empty/no index

        Document doc = getDoc();
        writer.addDocument(doc);
        writer.commit();

        searcher = new IndexSearcher(IndexReader.open(writer, true));//new
IndexSearcher(directory);
        docs = searcher.search(allQ, 10);
        assertEquals(1, docs.totalHits);
    }

On Tue, Jul 5, 2011 at 8:23 PM, Gabriele Kahlout
<gabri...@mysimpatico.com>wrote:

> Still won't work (same as before).
>
>
>  @Test
>     public void testUpdate() throws IOException,
> ParserConfigurationException, SAXException, ParseException {
>         Analyzer analyzer = getAnalyzer();
>         QueryParser parser = new QueryParser(Version.LUCENE_32, content,
> analyzer);
>         Query allQ = parser.parse("*:*");
>
>         IndexWriter writer = getWriter();
>         final IndexReader indexReader = IndexReader.open(writer, true);
>
>         IndexSearcher searcher = new IndexSearcher(indexReader);
>
>         TopDocs docs = searcher.search(allQ, 10);
>         assertEquals(0, docs.totalHits); // empty/no index
>
>         Document doc = getDoc();
>         writer.addDocument(doc);
>         writer.commit();
>
>     *    indexReader.reopen();
>         searcher = new IndexSearcher(indexReader);
>
>         docs = searcher.search(allQ, 10);
> *
>         assertEquals(1,docs.totalHits);
>     }
>
>   private Document getDoc() {
>         Document doc = new Document();
>         doc.add(new Field("id", "0", Field.Store.YES,
> Field.Index.NOT_ANALYZED));
>         return doc;
>     }
>
>  private IndexWriter getWriter() throws IOException {            // 2
>         return new IndexWriter(directory, new WhitespaceAnalyzer(), // 2
>                 IndexWriter.MaxFieldLength.UNLIMITED); // 2
>
>     }
>
> On Tue, Jul 5, 2011 at 8:15 PM, Michael McCandless <
> luc...@mikemccandless.com> wrote:
>
>> Sorry, you must reopen the underlying IndexReader, and then make a new
>> IndexSearcher from the reopened reader.
>>
>> Mike McCandless
>>
>> http://blog.mikemccandless.com
>>
>> On Tue, Jul 5, 2011 at 2:12 PM, Gabriele Kahlout
>> <gabri...@mysimpatico.com> wrote:
>> > and how do you do that? There is no reopen method
>> >
>> > On Tue, Jul 5, 2011 at 8:09 PM, Michael McCandless <
>> > luc...@mikemccandless.com> wrote:
>> >
>> >> After your writer.commit you need to reopen your searcher to see the
>> >> changes.
>> >>
>> >> Mike McCandless
>> >>
>> >> http://blog.mikemccandless.com
>> >>
>> >> On Tue, Jul 5, 2011 at 1:48 PM, Gabriele Kahlout
>> >> <gabri...@mysimpatico.com> wrote:
>> >> >    @Test
>> >> >    public void testUpdate() throws IOException,
>> >> > ParserConfigurationException, SAXException, ParseException {
>> >> >        Analyzer analyzer = getAnalyzer();
>> >> >        QueryParser parser = new QueryParser(Version.LUCENE_32,
>> content,
>> >> > analyzer);
>> >> >        Query allQ = parser.parse("*:*");
>> >> >
>> >> >        IndexWriter writer = getWriter();
>> >> >        IndexSearcher searcher = new
>> >> IndexSearcher(IndexReader.open(writer,
>> >> > true));
>> >> >        TopDocs docs = searcher.search(allQ, 10);
>> >> > *        assertEquals(0, docs.totalHits); // empty/no index*
>> >> >
>> >> >        Document doc = getDoc();
>> >> >        writer.addDocument(doc);
>> >> >        writer.commit();
>> >> >
>> >> >        docs = searcher.search(allQ, 10);
>> >> > *        assertEquals(1,docs.totalHits); //it fails here.
>> docs.totalHits
>> >> > equals 0*
>> >> >    }
>> >> > What am I doing wrong here?
>> >> >
>> >> > If I initialize searcher with new IndexSearcher(directory) I'm told:
>> >> > org.apache.lucene.index.IndexNotFoundException: no segments* file
>> found
>> >> in
>> >> > org.apache.lucene.store.RAMDirectory@3caa4blockFactory
>> >> =org.apache.lucene.store.SingleInstanceLockFactory@ed0220c:
>> >> > files: []
>> >> >
>> >> > --
>> >> > Regards,
>> >> > K. Gabriele
>> >> >
>> >> > --- unchanged since 20/9/10 ---
>> >> > P.S. If the subject contains "[LON]" or the addressee acknowledges
>> the
>> >> > receipt within 48 hours then I don't resend the email.
>> >> > subject(this) ∈ L(LON*) ∨ ∃x. (x ∈ MyInbox ∧ Acknowledges(x, this) ∧
>> >> time(x)
>> >> > < Now + 48h) ⇒ ¬resend(I, this).
>> >> >
>> >> > If an email is sent by a sender that is not a trusted contact or the
>> >> email
>> >> > does not contain a valid code then the email is not received. A valid
>> >> code
>> >> > starts with a hyphen and ends with "X".
>> >> > ∀x. x ∈ MyInbox ⇒ from(x) ∈ MySafeSenderList ∨ (∃y. y ∈ subject(x) ∧
>> y ∈
>> >> > L(-[a-z]+[0-9]X)).
>> >> >
>> >>
>> >
>> >
>> >
>> > --
>> > Regards,
>> > K. Gabriele
>> >
>> > --- unchanged since 20/9/10 ---
>> > P.S. If the subject contains "[LON]" or the addressee acknowledges the
>> > receipt within 48 hours then I don't resend the email.
>> > subject(this) ∈ L(LON*) ∨ ∃x. (x ∈ MyInbox ∧ Acknowledges(x, this) ∧
>> time(x)
>> > < Now + 48h) ⇒ ¬resend(I, this).
>> >
>> > If an email is sent by a sender that is not a trusted contact or the
>> email
>> > does not contain a valid code then the email is not received. A valid
>> code
>> > starts with a hyphen and ends with "X".
>> > ∀x. x ∈ MyInbox ⇒ from(x) ∈ MySafeSenderList ∨ (∃y. y ∈ subject(x) ∧ y ∈
>> > L(-[a-z]+[0-9]X)).
>> >
>>
>
>
>
> --
> Regards,
> K. Gabriele
>
> --- unchanged since 20/9/10 ---
> P.S. If the subject contains "[LON]" or the addressee acknowledges the
> receipt within 48 hours then I don't resend the email.
> subject(this) ∈ L(LON*) ∨ ∃x. (x ∈ MyInbox ∧ Acknowledges(x, this) ∧
> time(x) < Now + 48h) ⇒ ¬resend(I, this).
>
> If an email is sent by a sender that is not a trusted contact or the email
> does not contain a valid code then the email is not received. A valid code
> starts with a hyphen and ends with "X".
> ∀x. x ∈ MyInbox ⇒ from(x) ∈ MySafeSenderList ∨ (∃y. y ∈ subject(x) ∧ y ∈
> L(-[a-z]+[0-9]X)).
>
>


-- 
Regards,
K. Gabriele

--- unchanged since 20/9/10 ---
P.S. If the subject contains "[LON]" or the addressee acknowledges the
receipt within 48 hours then I don't resend the email.
subject(this) ∈ L(LON*) ∨ ∃x. (x ∈ MyInbox ∧ Acknowledges(x, this) ∧ time(x)
< Now + 48h) ⇒ ¬resend(I, this).

If an email is sent by a sender that is not a trusted contact or the email
does not contain a valid code then the email is not received. A valid code
starts with a hyphen and ends with "X".
∀x. x ∈ MyInbox ⇒ from(x) ∈ MySafeSenderList ∨ (∃y. y ∈ subject(x) ∧ y ∈
L(-[a-z]+[0-9]X)).

Reply via email to