Chris Bamford wrote:
Mark

> Look for the static factory methods on IndexReader.

I take it you mean IndexReader.open (dir, true) ?

Yeah.

If so, how do I then pass that into DelayCloseIndexSearcher() so that I can continue to rely on all the existing calls like:

    IndexReader reader = contentSearcher.getIndexReader();

Put another way, how do I associate the static IndexReader with an IndexSearcher object so I can use getIndexReader() to get it again?
Find where that contentSearcher is being created. Use a different constructor to create the Searcher - use the one that takes an IndexReader. Now you control the IndexReader creation, and you can use the readonly constructor option when you create it. That Searcher is either using a constructor that takes an IndexReader, or a Directory, or a String. If its using a String constructor, instead, use the Directory factory that takes a String, make a Directory, and use it to make an IndexReader that you build the IndexSearcher with. If its using a Directory, use that directory to make the IndexReader that is used for you IndexSearcher.


Thanks for your continued help with this  :-)

Chris

Mark Miller wrote:
Look for the static factory methods on IndexReader.

- Mark

Chris Bamford wrote:
Thanks Mark.

I have identified the spot where I need to do the surgery. However, I discover that IndexReader is abstract, but it seems crazy that I need to make a concrete class for which I have no need to add any of my own logic... Is there a suitable subclass I can use? The documented ones - FilterIndexReader, InstantiatedIndexReader, MultiReader, ParallelReader - all seem too complicated for what I need. My only requirement is to open it read-only!

Am I missing something?

Mark Miller wrote:
Chris Bamford wrote:

So does that mean if you don't explicitly open an IndexReader, the IndexSearcher will do it for you? Or what?

Right. The IndexReader takes a Directory, and the IndexSearcher takes an IndexReader - there are sugar constructors though - An IndexSearcher will also accept a String file path, which will be used to create a Directory which is used to create an IndexReader. It will also take a Directory, which will be used to create an IndexReader. It will also just accept the IndexReader.

So you have to find how that IndexReader is being created (or where) and change the code so that you get to create it, and when you do, do it read-only. It should be easier than that roundabout info sounds.

- Mark

---------------------------------------------------------------------
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