On Jun 21, 2005, at 9:19 AM, Nick Burch wrote:

Hi

I've been scanning the JavaDocs, but I can't see anything on this.


Let's say I have two indexes. Both have just been optimised, so each have lucene IDs 1-10 in them.

Now, I build a MultiSearcher over these two indexes. I search, get back a Hits object, and from that a lucene ID


From my testing, it seems that the MultiSearcher has handily offset all

the lucene IDs from the second index, so they don't clash with the first. It also seems that if I pass that ID to a MultiReader built on the same set of indexes, I get the right document back.

(i.e. my hits object gives me a lucene ID of 5 for my first hit, and if I ask the multireader for document with lucene ID 5, I get the same document)


Is this always going to be the case? Do I simply have to ensure that I open the MultiReader and MultiSearcher with the indexes in the right order to ensure the lucene IDs will be identically munged, or is it trickier than that?

lucenebook.com uses MultiSearcher and hits from different indexes are handled differently. Blog hits are shown fully. Book section hits are shown as snippets. Here's how it's done:

MultiSearcher searcher = (MultiSearcher) context.getAttribute ("searcher"); IndexReader[] readers = (IndexReader[]) context.getAttribute ("readers");

      for (int i = startHit; i <= endHit; i++) {
        int position = i - 1;
        Document doc = hits.doc(position);
        int indexIndex = searcher.subSearcher(hits.id(position));
        IndexReader reader = readers[indexIndex];

        // ...
      }

MulitSearcher handles the offsetting based on the specific IndexReader.

Look at the MultiSearcher API. There is also a subDoc() method to get the document number for it's specific index.

    Erik


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

Reply via email to