solr - 阻止更改,直到完全提交

时间:2014-02-04 07:14:03

标签: apache solr documents

我有一个缺乏文档的solr设置。 我的问题是 在提交期间,部分改变在前端可见,例如如果2000个文件被提交,前端将只显示2000个文档,经过一段时间5k,10k ......直到完全提交完成。

我希望这种行为发生变化,只有在完全提交后才能看到更改,直到完全提交完成,solr应该使用旧的索引/数据。

2 个答案:

答案 0 :(得分:0)

Solr使用近实时搜索的概念。

之前我没有更改默认设置,但您需要查看此内容:https://cwiki.apache.org/confluence/display/solr/Near+Real+Time+Searching

答案 1 :(得分:0)

在您的Solr(4)的solrconfig.xml中,有(或可能)一个名为autoCommit的部分

    <autoCommit>
       <maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered -->
       <maxTime>15000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered -->
       <openSearcher>false</openSearcher> <!-- SOLR 4.0.  Optionally don't open a searcher on hard commit.  This is useful to minimize the size of transaction logs that keep track of uncommitted updates. -->
    </autoCommit>

我读到了你提交大量文档的问题,所以你不能将它们保存在内存中,需要将它们提交到磁盘。但是,在将它们全部编入索引之前,您不希望它们可见。

因此,不是每个X文档都进行显式提交,而是使用 autoCommit 部分,但要确保 openSearcher false 。这样,活动的搜索者将继续指向原始提交点。然后,当您完成所有操作后,请执行完整的手动提交。这些变化应该可见。

请确保您没有autoSoftCommit部分,因为那部分根本没用。那个是想要尽快看到新文档的人(openSearcher设置为true)。