2011-10-31 10 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

関連する問題