我正在运行一个非常简单的性能实验,其中我发布2000文档到我的应用程序。 谁将他们保存到关系数据库中并将它们发送到Solr进行索引(在同一请求中同步)。solr性能与commitWithin没有意义
我测试3用例:
- 没有索引的话 - 〜45秒后2000个文件包括
- 索引 - 每次提交后添加。约8分钟后和指数2000文档
- 索引包括(!) - commitWithin 1毫秒〜55秒后和指数2000文档
第三结果并没有任何意义,我希望(!)行为类似于第二点。起初我认为这些文档并没有真正提交,但实际上我可以通过在实验过程中执行一些查询(通过solr Web UI)来看到它们。
我很担心我错过了很大的东西。是否有可能在每次添加后提交性能会降低400倍?
我用点2的代码:
SolrInputDocument = // get doc
SolrServer solrConnection = // get connection
solrConnection.add(doc);
solrConnection.commit();
凡为3点代码:
SolrInputDocument = // get doc
SolrServer solrConnection = // get connection
solrConnection.add(doc, 1); // According to API documentation I understand there is no need to call an explicit commit after this
我认为这是Solr Wiki中唯一没有访问过的页面:-) 谢谢! – Vitaliy
你的意思是什么,立即可搜索?我用commitWithin = 10000向我的索引添加了一个doc,期望它立即可用并在10秒内提交到磁盘。然而,文件并不是立即可用的,并且只有在10多年过去之后才出现。我在这里错过了什么吗? – preslavrachev
@ user1107412我相信,你混合了两件事:soft-commit和commitWithin。 CommitWithin使用软提交并按照您的情况行事。您可以直接使用soft-commmit,而无需commitWithin。然后,solr会立即尝试提交,并立即让搜索者看到文档。 –