2011-10-31 3 views
4

Je suis un débutant SolrJ et je veux savoir quel est le moyen le plus rapide pour déterminer si un document avec un ID unique existe? Je n'ai pas besoin du document, je veux juste savoir s'il est déjà dans l'index.Solr: Déterminer si un document existe

Maintenant, j'essayer quelque chose comme ça dans 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; 
    } 
} 

Je pense qu'il y aura de meilleures façons (plus rapide?) Qui ne nécessitent pas la notation etc ...

Répondre

4

Au lieu de chercher id est égal à, utiliser la requête de filtre qui n'aurait pas de score ainsi permettrait d'utiliser le fieldcache

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

Merci, c'était la chose que je cherchais. – Sonson

+1

La requête de filtre n'est peut-être pas la meilleure solution ici, car elle crée un cache de filtre (bitmap pour tous les documents de l'index). La création d'un cache de filtrage pour chaque identifiant de document semble problématique. Je pense que la requête de termes est meilleure ici, SOLR mettra en cache le champ d'identification unique de toute façon. – lexk

Questions connexes