2016-02-12 84 views
0

我想訪問自定義請求處理程序中的字段。我正在像這樣訪問每個文檔:solr-api訪問文檔字段花費了大量的時間

Document doc; 
doc = reader.document(id); 
DocFields = doc.getValues("state"); 

solr中有大約600,000個文檔。對於在所有文檔上運行的查詢,它需要超過65秒。

我也試過SolrIndexSearcher.doc的方法,但它也需要60秒左右。

刪除上面的代碼行將qtime降低到毫秒。但是,我需要爲我的算法訪問該字段。

有沒有更好的方法來做到這一點?

回答

0

看起來你在慢速查詢一個文件。 如果您需要查詢所有文檔,請嘗試查詢*:*(而不是詢問具體的ID),然後遍歷結果。

+0

我已經在查詢中使用了'*:*'。在「自定義請求處理程序」中,我需要每個文檔的特定字段值來實現算法。如上所述,爲每個文檔獲取該字段值的函數調用花費的時間太多。 –

+0

您正在查詢代碼中的特定ID。難道你不能在Solr返回給你的代碼中迭代你的Java代碼嗎? –

+0

不,我不能。正如我已經提到的,我需要在自定義處理程序中運行我的算法文檔。在自定義處理程序中,solr僅返回文檔的Id和分數。我正嘗試訪問另一個字段(每個文檔可能有不同的值),這是算法要求的工作。 –

相關問題