2012-02-23 45 views
1

我在爲我的電子商務應用程序使用Solr 1.3.0,現在我打算實施Solr 3.5.0。在Indexsearcher.java中,我們通過閱讀器的一些子閱讀器(以doc文檔爲基礎),而不像solr 1.3那樣我們可以傳遞整個閱讀器。Solr 3.5.0中的IndexSearcher幫助

任何人都可以幫助我在哪裏和什麼基礎子生成器生成?

謝謝。 Jeyaprakash

public void search(Weight weight, Filter filter, Collector collector) 
    throws IOException { 

// TODO: should we make this 
// threaded...? the Collector could be sync'd? 


    System.out.println("Total number of sub readers is "+subReaders.length); 

    // always use single thread: 
for (int i = 0; i < subReaders.length; i++) { 
    System.out.println("The value of Doc base passed is "+docBase + docStarts[i]); 
    System.out.println("The Number in sub reader is "+subReaders[i].numDocs()); 
    // search each subreader 
    collector.setNextReader(subReaders[i], docBase + docStarts[i]); 
    final Scorer scorer = (filter == null) ? 
    weight.scorer(subReaders[i], !collector.acceptsDocsOutOfOrder(), true) : 
    FilteredQuery.getFilteredScorer(subReaders[i], getSimilarity(), weight, weight, filter); 
    if (scorer != null) { 
    scorer.score(collector); 
    } 
} 

}

+0

您可以粘貼相關的代碼? – jpountz 2012-02-23 13:02:10

+0

我已經添加了來自IndexSearxher.java的代碼 – jeyaprakash 2012-02-23 14:33:55

回答

1

大多數的時間,分讀者對單個段的讀者。關鍵是要對讀寫器進行更細緻的控制,並且在知道自己感興趣哪個段時獲得更好的性能。

例如,在提交新段時,使段讀取器允許您僅載入字段緩存新承諾的段,而不是重新加載整個索引的字段高速緩存(速度更快並防止高速緩存條目重複)。

烏韋·辛德勒和西蒙Willnauer寫了關於這個主題很漂亮的文章: