我在我的web应用程序中使用Solr作为搜索引擎。我使用DataImportHandler自动将数据库中的数据导入搜索索引。当DataImportHandler添加新数据时,数据已成功添加到索引,但在使用SolrJ查询索引时不会返回数据:我必须重新启动我的应用程序服务器才能找到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吗?恐怕会招致很大的表现处罚。
SolrJ不缓存。我对DIH不熟悉 - 但是你确定你正在提交?最后 - 你可能会在[email protected]上得到更多的开发人员的爱。 –