2015-09-30 28 views
1

我有一個MultiReader連接到幾個索引。我可以知道索引MultiReader從哪裏獲取文檔?

當我運行一個查詢並得到結果後,有沒有一種方法可以知道結果來自哪個索引?

我知道這不完全是MultiReader的用途。我仍然需要這個。

+0

好奇,你的用例是什麼需要? – Mysterion

+0

也,我沒有看到這樣做的任何簡單的方法,olny可能性是擴展Lucene類,導致CompositeReader有不同來源的ID。 – Mysterion

回答

0

如果你是誰創建MultiReader實例你可以

您可以擴展該類並實現所需的功能。 BaseCompositeReader(超級類型MultiReader)有readerIndex()getSequentialSubReaders()方法。所以下面的代碼應該工作:

public static class MyMultiReader extends MultiReader { 

    public MyMultiReader(IndexReader... subReaders) throws IOException { 
     super(subReaders); 
    } 

    public IndexReader getReaderForDocument(int docId) { 
     return getSequentialSubReaders().get(readerIndex(docId)); 
    } 
} 
相關問題