0

我在使用自动提交和软提交功能时遇到了问题。

我将此语法与 curl 一起使用来更新我的数据:

curl $url/solr/update/csv -F "stream.file=$folder/$file" -F  "commit=false" -F "header=false" -F "fieldnames=`cat $header`"

我在我的 solrconfig.xml 中设置了 autocommit :

<autoCommit> 
  <maxTime>10000</maxTime> 
  <openSearcher>false</openSearcher> 
</autoCommit>

我已经索引了一组文档,并且在索引结束时(索引需要几分钟)在我的 solr 管理员中没有可见文档...当我重新加载或执行显式提交时,我的所有文档都是可见的.

我知道如果我在“commit=true”中更改“commit=false”,我的所有文档都会被索引。但我知道在每次更新后进行提交并不是一个好的行为。

我是否错过了 AutoCommit 和 SoftCommit 的设置?

4

1 回答 1

1

来自该部分的示例 Solrconfix.xml文件<autoCommit>

在特定条件下自动执行硬提交。在添加文档时考虑使用“commitWithin”,而不是启用 autoCommit。

来自CommitWithin Wiki 页面

CommitWithin 是 Solr 1.4 中引入的一种提交策略,它允许客户端要求 Solr 确保<add>在特定时间内提交。这将何时进行提交的控制权留给了 Solr 本身,将提交的数量优化到最低限度,同时仍然满足更新延迟要求。如果我说<add commitWithin=10000>(在 XMLUpdateRequestHandler 更新中),这会告诉 Solr 确保文档在 10000 毫秒内提交,即 10 秒。然后我可以在这 10 秒内继续添加其他文档(可能带有其他 commitWithin 值),<commit>当缓冲区中最旧的文件到期时,Solr 会自动执行。

去年或更长时间以来,我几乎在所有索引更新中都使用了 commitWithin,并且看到的结果比<autoCommit>solrconfig.xml 中的设置好得多。您可以在发出 curl 请求时指定此参数,"commit=false"方法"comitWithin=10000"如下:

 curl $url/solr/update/csv -F "stream.file=$folder/$file" -F  "commitWithin=10000" -F "header=false" -F "fieldnames=`cat $header`"
于 2013-08-07T15:11:01.430 回答