В вашей Solr (4) 's 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 является ложным. Таким образом, активный искатель будет указывать на исходную точку фиксации. Затем, когда вы все закончите, выполните полную ручную фиксацию. Затем изменения должны стать видимыми.
Просто убедитесь, что у вас нет раздела autoSoftCommit, потому что он вам не пригодится. Это для людей, которые хотят как можно скорее увидеть новые документы (с открытием openSearcher в true).