Я использую Solr в своем веб-приложении в качестве поисковой системы. Я использую DataImportHandler для автоматического импорта данных из моей базы данных в поисковый индекс. Когда DataImportHandler добавляет новые данные, данные успешно добавляются в индекс, но не возвращаются при запросе индекса с использованием SolrJ: мне нужно перезапустить сервер приложений, чтобы найти данные, найденные SolrJ. Есть ли какое-то кэширование? Я использовал SolrJ во встроенном режиме. Вот мой код SolrJ:
private static final SolrServer solrServer = initSolrServer();
private static SolrServer initSolrServer() {
try {
CoreContainer.Initializer initializer = new CoreContainer.Initializer();
coreContainer = initializer.initialize();
EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, "");
return server;
} catch (Exception ex) {
logger.log(Level.SEVERE, "Error initializing SOLR server", ex);
return null;
}
}
Затем для запроса я делаю следующее:
SolrQuery query = new SolrQuery(keyword);
QueryResponse response = solrServer.query(query);
Как видите, мой SolrServer объявлен как статический. Должен ли я создать новый EmbeddedSolrServer для каждого запроса вместо этого? Боюсь, это повлечет за собой большие потери производительности.