[ 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to