Hi,

        I guess you have answered yourself. I can imagine that Tomcat was serving your 
servlet with constructed index searcher while your command line application wanted to 
recreate the index. Are you protected against this situation?

Jiri.

-----Original Message-----
From: Fred Toth [mailto:[EMAIL PROTECTED]
Sent: Monday, September 20, 2004 3:40 PM
To: Lucene Users List
Subject: Re: indexes won't close on windows


Hi Sergiu,

Thanks for your suggestions. I will try using just the IndexSearcher(String...)
and see if that makes a difference in the problem. I can confirm that
I am doing a proper close() and that I'm checking for exceptions. Again,
the problem is not with the search function, but with the command-line
indexer. It is not run at startup, but on demand when the index needs
to be recreated.

Thanks,

Fred

At 08:50 AM 9/20/2004, you wrote:
>Hi Fred,
>
>That's right, there are many references to this kind of problems in the 
>lucene-user list.
>This suggestions were already made, but I'll list them once again:
>
>1. One way to use the IndexSearcher is to use yopur code, but I don't 
>encourage users to do that
>            IndexReader reader = null;
>        IndexSearcher searcher = null;
>        reader = IndexReader.open(indexName);
>          searcher = new IndexSearcher(reader);
>
>    It's better to use the constructor that uses a String to create a 
> IndexSearcher.
>|*IndexSearcher 
><http://localhost:8080/webdoc/lucene/docs/api/org/apache/lucene/search/IndexSearcher.html#IndexSearcher%28java.lang.String%29>*(String
> 
><http://java.sun.com/j2se/1.4/docs/api/java/lang/String.html> path)|. I 
>even suggest that the path to be obtained as
>
>File indexFolder = new File(luceneIndex);
>IndexSearcher searcher = new IndexSearcher(indexFolder.toString()).
>
>2. I can imagine situations when the lucene index must be created at each 
>startup, but I think that this is very rare,
>so I suggest to use code like
>
>if(indexExists(indexFolder))
>    writer = new IndexWriter(index, new StandardAnalyzer(), false);
>else
>    writer = new IndexWriter(index, new StandardAnalyzer(), true);
>//don#t forget to close the indexWriter when you create the index and to 
>open it again
>
>I use a indexExists function like
>boolean indexExists(File indexFolder)
>    return indexFolder.exists()
>
>and it works propertly .... even if that's not the best example of testing 
>the existence of the index
>
>3.'It is here that I get a failure, "can't delete _b9.cfs"'
>
>that's ptobably because of the way you use the searcher, and probably 
>because you don't close the readers, writers and searchers propertly.
>4. be sure that all close() methods are guarded with
>    catch(Exception e){
>          logger.log(e);
>    } blocks
>
>5. Pay attention if you use a multithreading environment, in this case you 
>have to make indexing, delition and search synchronized
>
>   So ...
>
>  Have fun,
>
>    Sergiu
>
>PS: I think that I'll submit some code with synchronized 
>index/delete/search operations and to tell why I need to use it.
>
>
>Fred Toth wrote:
>
>>Hi Sergiu,
>>
>>My searches take place in tomcat, in a struts action, in a single method
>>Abbreviated code:
>>
>>         IndexReader reader = null;
>>         IndexSearcher searcher = null;
>>         reader = IndexReader.open(indexName);
>>           searcher = new IndexSearcher(reader);
>>         // code to do a search and extract hits, works fine.
>>         searcher.close();
>>           reader.close();
>>
>>I have a command-line indexer that is a minor modification of the
>>IndexHTML.java that comes with Lucene. It does this:
>>
>>         writer = new IndexWriter(index, new StandardAnalyzer(), create);
>>         // add docs
>>
>>(with the create flag set true). It is here that I get a failure, "can't 
>>delete _b9.cfs"
>>or similar. This happens when tomcat is completely idle (we're still 
>>testing and
>>not live), so all readers and searchers should be closed, as least as far as
>>java is concerned. But windows will not allow the indexer to delete the 
>>old index.
>>
>>I restarted tomcat and the problem cleared. It's as if the JVM on windows 
>>doesn't
>>get the file closes quite right.
>>
>>I've seen numerous references on this list to similar behavior, but it's 
>>not clear
>>what the fix might be.
>>
>>Many thanks,
>>
>>Fred
>>
>>At 02:32 AM 9/20/2004, you wrote:
>>
>>>  Hi Fred,
>>>
>>>I think that we can help you if you provide us your code, and the 
>>>context in which it is used.
>>>we need to see how you open and close the searcher and the reader, and 
>>>what operations are you doing on index.
>>>
>>>  All the best,
>>>
>>>  Sergiu
>>>
>>>
>>>
>>>Fred Toth wrote:
>>>
>>>>Hi,
>>>>
>>>>I have built a nice lucene application on linux with no problems,
>>>>but when I ported to windows for the customer, I started experiencing
>>>>problems with the index not closing. This prevents re-indexing.
>>>>
>>>>I'm using lucene 1.4.1 under tomcat 5.0.28.
>>>>
>>>>My search operation is very simple and works great:
>>>>
>>>>create reader
>>>>create searcher
>>>>do search
>>>>extract N docs from hits
>>>>close searcher
>>>>close reader
>>>>
>>>>However, on several occasions, when trying to re-index, I get
>>>>"can't delete file" errors from the indexer. I discovered that restarting
>>>>tomcat clears the problem. (Note that I'm recreating the index
>>>>completely, not updating.)
>>>>
>>>>I've spent the last couple of hours trolling the archives and I've
>>>>found numerous references to windows problems with open files.
>>>>
>>>>Is there a fix for this? How can I force the files to close? What's
>>>>the best work-around?
>>>>
>>>>Many thanks,
>>>>
>>>>Fred
>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to