2011/8/30 Joe MA <mrj...@comcast.net>:
> When searching a single collection, no problem.  But if I want to search the 
> two collections at the same time, I need to know which collection the hit 
> came from so I can retrieve the base_path from the database.  These 
> base_paths can be different.  As mentioned, this was trivial in Lucene 1.x 
> and 2.x as I just grabbed the subsearcher from the result, which would for 
> example return a 1 or 2 indicating which of the two collections the result 
> came from.  Then I can build the path to the file.  In other words, 
> subsearcher gave me the foreign key I needed to map to additional external 
> information associated with each index during a multisearch.  That is now 
> gone in Lucene 3.3.

You could use the suggestion I made of doing the loop over the
IndexReader subReaders (recursively until you get to the
SegmentReaders) and use a HashMap<SegmentReader, String> (or similar
container structure) to associate the segments to a path. It sounds
like your application doesn't reopen indexes with much frequency,
which is good: you will need to regenerate this map any time you
reopen your indexes.

When collector.setNextReader is called, you can simply get (at that
point) the String associated with the particular SegmentReader you're
working with. Then, every time Collector.collect is called, you can
tack that on to whatever data structure you're using to get at your
documents. It doesn't have to be high memory overhead if you make sure
the strings are interned.

Perhaps Uwe or other Lucene devs have better ideas for approaching
this; they often do :)

--dho

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to