Solr: Определите, существует ли документ

#java #solr #solrj

#java #solr #solrj

Вопрос:

Я новичок в SolrJ и хочу узнать, какой самый быстрый способ определить, существует ли документ с уникальным идентификатором? Мне не нужен документ, я просто хочу узнать, есть ли он уже в индексе.

Теперь я попробую что-то подобное в 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;
    }
}
 

Я думаю, что будет лучше (быстрее?) способы, которые не требуют оценки и т. Д. …

Ответ №1:

Вместо поиска id equals используйте запрос фильтра, который также не будет иметь никакой оценки, что позволит использовать fieldcache

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

Комментарии:

1. Спасибо, это было то, что я так долго искал.

2. Запрос фильтра может быть здесь не лучшим решением, поскольку он создает кэш фильтра (растровое изображение для всех документов в индексе). Создание кэша фильтров для каждого идентификатора документа кажется проблематичным. Я думаю, что запрос терминов здесь лучше, SOLR в любом случае будет кэшировать поле уникального идентификатора.