Hi,mark
You are right ,using accessor.release(indexwriter) avoid
throwing the indexwriter closed exception .
Thanks.
kai
-----邮件原件-----
发件人: Mark Miller [mailto:markrmiller gmail.com]
发送时间: 2007年8月7日 星期二 19:10
收件人: java-user lucene.apache.org
主题: Re: 答复: 答复: About muti-Threads in Lucene
You don't close the indexwriter (or readers or searchers)
with the
accessor code. You release them, and the accessor code will
close them
when appropriate.
- Mark
Kai Hu wrote:
> Hi,Patrick
> I tested use a map , get a single
LuceneIndexAccessor,and get a cached IndexWriter ,but after
do operation of update,delete,add documents,I should close
the IndexWriter to release the Lock,it will throw
Exceptions" this IndexWriter is closed" when other
threads execute add,update,delete operations.should I
synchronized the IndexWriter object? It's better if you can
send me a demo ,thanks .
>
> kai
>
>
>> Hi Kai
>>
>> We keep a synchronized map of LuceneIndexAccessor
instances, one instance per
>> Directory. The map is keyed on the directory path.
We then re-use
>> the accessor rather than creating a new one each
time.
>>
>> Patrick
>>
>>
> On 06/08/07, Kai Hu <kai.hu dusee.cn> wrote:
>
>> Thanks , Patrick,
>>
>> It is useful. But I found a problem that I use
>>
>> "new
LuceneIndexAccessor(accessProvider);" when a request
comes in B/S,the LuceneIndexAccessor.getWriter() will lose
its sense,it will new an IndexWriter.
>>
>> public IndexWriter getWriter() throws IOException
{
>>
>> IndexWriter result;
>>
>> synchronized (this) {//here
"synchronized" will lose its sense
>>
>> checkClosed();
>>
>> ...
>>
>> if (cachedWriter != null) {
>>
>> log.debug("returning cached
writer");
>>
>> result = cachedWriter;
>>
>> writerUseCount++;
>>
>> } else {
>>
>> log.debug("opening new writer
and caching it");
>>
>> result =
accessProvider.getWriter();// when new a LuceneIndexAccessor
Object ,it will new an IndexWriter Object
>>
>> cachedWriter = result;
>>
>> writerUseCount = 1;
>>
>> }
>>
>> }
>>
>> }
>>
>> It will also throw a Exception "cann't obtain
the Lock",should I use a single instance of
LuceneIndexAccessor? Suppose I use a single instance of
LuceneIndexAccessor,how to set a different Directory or
Analyzer at one time.
>>
>>
>>
>> kai
>>
>>
>>
///////////////////////////////////////////////////////////
>>
>>
///////////////////////////////////////////////////////////
>>
>>
>>
>>
>>> Hi Kai
>>>
>>> We use the Lucene Index Accessor contribution:
>>>
>>> http://www.nabble.com/Fwd%3A-
Contribution%3A-LuceneIndexAccessor-t17416.html#a47049
>>>
>>> Patrick
>>>
>>
>> On 06/08/07, Kai Hu <kai.hu dusee.cn> wrote:
>>
>>
>>> Hi,
>>>
>>> How do you solve the problems when
add,update,delete documents
>>>
>>> in muti-threads,use synchronized ?
>>>
>>
>>
------------------------------------------------------------
---------
>>
>> To unsubscribe, e-mail: java-user-unsubscribe lucene.apache.org
>>
>> For additional commands, e-mail: java-user-help lucene.apache.org
>>
>>
>>
>>
>>
>
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: java-user-unsubscribe lucene.apache.org
> For additional commands, e-mail: java-user-help lucene.apache.org
>
>
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: java-user-unsubscribe lucene.apache.org
> For additional commands, e-mail: java-user-help lucene.apache.org
>
>
>
------------------------------------------------------------
---------
To unsubscribe, e-mail: java-user-unsubscribe lucene.apache.org
For additional commands, e-mail: java-user-help lucene.apache.org
------------------------------------------------------------
---------
To unsubscribe, e-mail: java-user-unsubscribe lucene.apache.org
For additional commands, e-mail: java-user-help lucene.apache.org
|