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]