#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 в любом случае будет кэшировать поле уникального идентификатора.