Lucene 如何从Solr索引中删除逻辑删除的文档?

Lucene 如何从Solr索引中删除逻辑删除的文档?,lucene,solr,solrj,Lucene,Solr,Solrj,我正在为一个项目实施Solr,在这个项目中,每天都需要大规模地添加和删除可供搜索的记录 由于规模,我需要确保索引的大小是适当的 在Solr的测试安装中,我为一组10个文档编制了索引。然后,我对其中一个文档进行了更改,并希望用索引中相同的ID替换该文档。当我搜索时,它工作正常,行为符合预期 我正在使用此代码更新文档: getSolrServer().deleteById(document.getIndexId()); getSolrServer().add(document.getSolrInpu

我正在为一个项目实施Solr,在这个项目中,每天都需要大规模地添加和删除可供搜索的记录

由于规模,我需要确保索引的大小是适当的

在Solr的测试安装中,我为一组10个文档编制了索引。然后,我对其中一个文档进行了更改,并希望用索引中相同的ID替换该文档。当我搜索时,它工作正常,行为符合预期

我正在使用此代码更新文档:

getSolrServer().deleteById(document.getIndexId());
getSolrServer().add(document.getSolrInputDocument());
getSolrServer().commit();
但我注意到,当我查看Solr服务器的统计页面时,数据并不是我所期望的

在初始索引之后,numDocs和maxDocs都等于预期的10。但是,当我更新文档时,numDocs仍然等于10(预期),而maxDocs等于11(意外)

在阅读文档时,我看到

maxDoc可能会更大,因为maxDoc计数包括尚未从索引中删除的逻辑删除的文档

所以问题是,如何从索引中删除逻辑删除的文档

如果索引中仍然存在这些文档,那么在使用大量文档运行时,我是否会面临性能损失的风险

谢谢:)

你必须这么做

请注意,优化是扩展性的,您可能不应该每天进行更多的优化

以下是有关优化的更多信息:


谢谢-这正是我需要的:)