我在我的 Web 应用程序中使用 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 吗?恐怕这会导致很大的性能损失。