gpt4 book ai didi

java - SolrJ 是否执行缓存?

转载 作者:行者123 更新时间:2023-11-29 09:20:01 27 4
gpt4 key购买 nike

我在我的 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 吗?恐怕这会导致很大的性能损失。

最佳答案

Solr 服务器的标准配置不提供自动提交。如果您有 solrconfig.xml 文件,请查找注释标记“autoCommit”。如果没有,则在添加每个文档后,您可以调用 server.commit();,尽管对于大量文档流,这可能会证明是一个很大的性能问题(因为 commit 相对繁重的操作)。

如果您在 Web 应用程序中使用它,我建议您在部署中使用 solr-x.x.war 而不是 EmbeddedSolrServer。这将为您提供丰富的 Http 接口(interface),用于更新、管理和搜索索引。

关于java - SolrJ 是否执行缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7112046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com