2011-10-31 114 views
4

我是SolrJ初學者,希望找出最快的方式來確定是否存在具有唯一ID的文檔? 我不需要這個文檔,我只是想知道它是否已經在索引中。Solr:確定文檔是否存在

現在,我嘗試這樣在SolrJ:

private boolean solrContainsId(final String id) { 
    SolrQuery query = new SolrQuery("id:" + id); 

    try { 
     long count = server.query(query).getResults().getNumFound(); 
     return count > 0; 
    } catch (SolrServerException e) { 
     return false; 
    } 
} 

我想一定會有更好的(更快?)的方式,其並不需要得分等......

回答

4

而不是搜索的ID等於,使用過濾器查詢,這將不會有任何得分,以及使能使用fieldcache

SolrQuery query = new SolrQuery(); 
query.addFilterQuery("id:"+id); 
+0

謝謝,這是我一直在尋找的東西。 – Sonson

+1

這裏的過濾器查詢可能不是最好的解決方案,因爲它創建了一個過濾器緩存(位於索引中所有文檔的位圖)。爲每個文檔ID創建過濾器緩存似乎有問題。我認爲術語查詢在這裏更好,SOLR將緩存唯一的ID字段。 – lexk