lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Willnauer (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LUCENE-3180) Can't delete a document using deleteDocument(int docID) if using IndexWriter AND IndexReader
Date Wed, 08 Jun 2011 18:23:00 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-3180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13046120#comment-13046120
] 

Simon Willnauer commented on LUCENE-3180:
-----------------------------------------

Hey Danny,

you can/should modify the lucene index only with one writer at the same time. in your example
the IndexReader needs to acquire the lock on the index which is hold by the IndexWriter already.
In order to modify the index via IndexReader you need to open it writeable too (pass false
to readOnly).

Usually to update a document you use some kind of Unique ID field and pass the ID term plus
the document to IndexWriter#updateDocument. This will delete all previous documents with the
same ID term indexed.  

Hope that helps. You should get some help on the user list too.

> Can't delete a document using deleteDocument(int docID) if using IndexWriter AND IndexReader
> --------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-3180
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3180
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: core/index
>    Affects Versions: 3.2
>         Environment: Windows 
>            Reporter: Danny Lade
>         Attachments: ImpossibleLuceneCode.java
>
>
> It is impossible to delete a document with "reader.deleteDocument(docID)" if using an
IndexWriter too.
> using:
> {code:java}
> writer = new IndexWriter(directory, config);
> reader = IndexReader.open(writer, true);
> {code}
> results in:
> {code:java}
>   Exception in thread "main" java.lang.UnsupportedOperationException: This IndexReader
cannot make any changes to the index (it was opened with readOnly = true)
>       at org.apache.lucene.index.ReadOnlySegmentReader.noWrite(ReadOnlySegmentReader.java:23)
>       at org.apache.lucene.index.ReadOnlyDirectoryReader.acquireWriteLock(ReadOnlyDirectoryReader.java:43)
>       at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067)
>       at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:60)
> {code}
> and using:
> {code:java}
> writer = new IndexWriter(directory, config);
> reader = IndexReader.open(directory, false);
> {code}
>   
> results in:
> {code:java}
>   org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@S:\Java\Morpheum\lucene\write.lock
>       at org.apache.lucene.store.Lock.obtain(Lock.java:84)
>       at org.apache.lucene.index.DirectoryReader.acquireWriteLock(DirectoryReader.java:765)
>       at org.apache.lucene.index.IndexReader.deleteDocument(IndexReader.java:1067)
>       at de.morpheum.morphy.ImpossibleLuceneCode.main(ImpossibleLuceneCode.java:69)
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

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


Mime
View raw message