You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Gabriele Kahlout <ga...@mysimpatico.com> on 2011/07/05 19:48:21 UTC

Cannot I search documents added by IndexWriter after commit?

    @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)).

Re: Cannot I search documents added by IndexWriter after commit?

Posted by Robert Muir <rc...@gmail.com>.
re-open does work, but you cannot ignore its return value! see the
javadocs for an example.

On Tue, Jul 5, 2011 at 3:10 PM, Gabriele Kahlout
<ga...@mysimpatico.com> wrote:
> 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
> <ga...@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 <
>> lucene@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
>>> <ga...@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 <
>>> > lucene@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
>>> >> <ga...@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)).
>

Re: Cannot I search documents added by IndexWriter after commit?

Posted by Gabriele Kahlout <ga...@mysimpatico.com>.
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
<ga...@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 <
> lucene@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
>> <ga...@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 <
>> > lucene@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
>> >> <ga...@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)).

Re: Cannot I search documents added by IndexWriter after commit?

Posted by Gabriele Kahlout <ga...@mysimpatico.com>.
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 <
lucene@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
> <ga...@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 <
> > lucene@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
> >> <ga...@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)).

Re: Cannot I search documents added by IndexWriter after commit?

Posted by Michael McCandless <lu...@mikemccandless.com>.
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
<ga...@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 <
> lucene@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
>> <ga...@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)).
>

Re: Cannot I search documents added by IndexWriter after commit?

Posted by Gabriele Kahlout <ga...@mysimpatico.com>.
and how do you do that? There is no reopen method

On Tue, Jul 5, 2011 at 8:09 PM, Michael McCandless <
lucene@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
> <ga...@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)).

Re: Cannot I search documents added by IndexWriter after commit?

Posted by Michael McCandless <lu...@mikemccandless.com>.
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
<ga...@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)).
>