What happens if you close the writer before instantiating
a new searcher? I can't say for sure whether it matters,
but it's worth a try..
Erick
On 10/25/07, Guilherme Barile <[EMAIL PROTECTED]> wrote:
>
> Hello
> I wrote a simple class to abstract searching on a text file
> (generate by a legacy system).
>
> class MyFile { private Searcher s; private long timestamp; }
>
> It creates a timer and checks every ten minutes if
> textfile.lastModified() is diferent from the number it cached on
> timestamp, and recreates the index. There's a search(query) method
> which parses the query and returns an arraylist of objects.
> My index lies on RAM, so everytime I rebuild it, i do something
> like
>
> private void run() {
> File f = new File(textfile);
>
> if(f.lastModified() == this.timestamp) return;
>
> RAMDirectory idx = new RAMDirectory();
> IndexWriter writer = new IndexWriter(idx, new
> StandardAnalyzer
> (),true);
> // here I parse the text file and add the
> documents to the index
>
> // update the searcher and timestamp
> this.s = new IndexSearcher(idx);
> timestamp = lastModified;
> }
>
> Problem is: it seems the searcher is not being updated. All search
> operations occur in this class (using my own search method) accessing
> "this.s" directly
>
> Is there any better approach for doing this (reloading the
> searcher) ?
>
> Thanks a lot
>
>
> gui
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>