You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Rob Bygrave <ro...@gmail.com> on 2011/07/08 05:04:50 UTC

Bug in v3.3.0? - IndexNotFoundException: no segments* file found in org.apache.lucene.store.SimpleFSDirectory@

This looks like a Bug in v3.3.0.

The code below works in 3.0.1 without calling the writer.commit() before
 IndexReader.open(directory).

In v3.3.0 when the index does not yet exist I need to add the
writer.commit() and I believe that creates the segments. If I don't add the
writer.commit() then I get the IndexNotFoundException: no segments* file
found exception below.


            IndexWriterConfig config = new
IndexWriterConfig(Version.LUCENE_33, analyzer);
            config.setOpenMode(OpenMode.CREATE_OR_APPEND);
            config.setIndexDeletionPolicy(commitDeletionPolicy);
            IndexWriter writer = new IndexWriter(directory, config);

            // -----------------
            // Need to add this w.commit() when the index is does not exist
            writer.commit();
            // -----------------

            // without the commit above this fails with
a IndexNotFoundException when the index does not exist
            IndexReader reader = IndexReader.open(directory);



The exception when writer.commit() is not there and the index does not exist
is:

Caused by: org.apache.lucene.index.IndexNotFoundException: no segments* file
found in org.apache.lucene.store.SimpleFSDirectory@C:\dev\workspace-sts\uoa-tmp-copydb\lucene\dst\model.indexdefn.OrgUnitIndexDefn
lockFactory=org.apache.lucene.store.NativeFSLockFactory@3bc257: files:
[write.lock]
at
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:708)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:428)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:274)


The workaround is to add the writer.commit() and that seems pretty
reasonable to me.

Thanks, Rob.

Re: Bug in v3.3.0? - IndexNotFoundException: no segments* file found in org.apache.lucene.store.SimpleFSDirectory@

Posted by Rob Bygrave <ro...@gmail.com>.
Great, thanks.

On 8 July 2011 15:08, Robert Muir <rc...@gmail.com> wrote:

> Hi, this isn't a bug, its a documented change in behavior in the 3.1
> CHANGES.txt notes:
>
> * LUCENE-2386: IndexWriter no longer performs an empty commit upon new
> index
>  creation. Previously, if you passed an empty Directory and set OpenMode to
>  CREATE*, IndexWriter would make a first empty commit. If you need that
>  behavior you can call writer.commit()/close() immediately after you create
> it.
>
>
> http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_3_1/lucene/CHANGES.txt
>
> On Thu, Jul 7, 2011 at 11:04 PM, Rob Bygrave <ro...@gmail.com>
> wrote:
> > This looks like a Bug in v3.3.0.
> >
> > The code below works in 3.0.1 without calling the writer.commit() before
> >  IndexReader.open(directory).
> >
> > In v3.3.0 when the index does not yet exist I need to add the
> > writer.commit() and I believe that creates the segments. If I don't add
> the
> > writer.commit() then I get the IndexNotFoundException: no segments* file
> > found exception below.
> >
> >
> >            IndexWriterConfig config = new
> > IndexWriterConfig(Version.LUCENE_33, analyzer);
> >            config.setOpenMode(OpenMode.CREATE_OR_APPEND);
> >            config.setIndexDeletionPolicy(commitDeletionPolicy);
> >            IndexWriter writer = new IndexWriter(directory, config);
> >
> >            // -----------------
> >            // Need to add this w.commit() when the index is does not
> exist
> >            writer.commit();
> >            // -----------------
> >
> >            // without the commit above this fails with
> > a IndexNotFoundException when the index does not exist
> >            IndexReader reader = IndexReader.open(directory);
> >
> >
> >
> > The exception when writer.commit() is not there and the index does not
> exist
> > is:
> >
> > Caused by: org.apache.lucene.index.IndexNotFoundException: no segments*
> file
> > found in org.apache.lucene.store.SimpleFSDirectory@C
> :\dev\workspace-sts\uoa-tmp-copydb\lucene\dst\model.indexdefn.OrgUnitIndexDefn
> > lockFactory=org.apache.lucene.store.NativeFSLockFactory@3bc257: files:
> > [write.lock]
> > at
> >
> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:708)
> > at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)
> > at org.apache.lucene.index.IndexReader.open(IndexReader.java:428)
> > at org.apache.lucene.index.IndexReader.open(IndexReader.java:274)
> >
> >
> > The workaround is to add the writer.commit() and that seems pretty
> > reasonable to me.
> >
> > Thanks, Rob.
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>

Re: Bug in v3.3.0? - IndexNotFoundException: no segments* file found in org.apache.lucene.store.SimpleFSDirectory@

Posted by Robert Muir <rc...@gmail.com>.
Hi, this isn't a bug, its a documented change in behavior in the 3.1
CHANGES.txt notes:

* LUCENE-2386: IndexWriter no longer performs an empty commit upon new index
  creation. Previously, if you passed an empty Directory and set OpenMode to
  CREATE*, IndexWriter would make a first empty commit. If you need that
  behavior you can call writer.commit()/close() immediately after you create it.

http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_3_1/lucene/CHANGES.txt

On Thu, Jul 7, 2011 at 11:04 PM, Rob Bygrave <ro...@gmail.com> wrote:
> This looks like a Bug in v3.3.0.
>
> The code below works in 3.0.1 without calling the writer.commit() before
>  IndexReader.open(directory).
>
> In v3.3.0 when the index does not yet exist I need to add the
> writer.commit() and I believe that creates the segments. If I don't add the
> writer.commit() then I get the IndexNotFoundException: no segments* file
> found exception below.
>
>
>            IndexWriterConfig config = new
> IndexWriterConfig(Version.LUCENE_33, analyzer);
>            config.setOpenMode(OpenMode.CREATE_OR_APPEND);
>            config.setIndexDeletionPolicy(commitDeletionPolicy);
>            IndexWriter writer = new IndexWriter(directory, config);
>
>            // -----------------
>            // Need to add this w.commit() when the index is does not exist
>            writer.commit();
>            // -----------------
>
>            // without the commit above this fails with
> a IndexNotFoundException when the index does not exist
>            IndexReader reader = IndexReader.open(directory);
>
>
>
> The exception when writer.commit() is not there and the index does not exist
> is:
>
> Caused by: org.apache.lucene.index.IndexNotFoundException: no segments* file
> found in org.apache.lucene.store.SimpleFSDirectory@C:\dev\workspace-sts\uoa-tmp-copydb\lucene\dst\model.indexdefn.OrgUnitIndexDefn
> lockFactory=org.apache.lucene.store.NativeFSLockFactory@3bc257: files:
> [write.lock]
> at
> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:708)
> at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)
> at org.apache.lucene.index.IndexReader.open(IndexReader.java:428)
> at org.apache.lucene.index.IndexReader.open(IndexReader.java:274)
>
>
> The workaround is to add the writer.commit() and that seems pretty
> reasonable to me.
>
> Thanks, Rob.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org