3

我正在为一个项目实施 Solr 的自由文本搜索,在该项目中,每天需要大规模添加和删除可供搜索的记录。

由于规模的原因,我需要确保索引的大小是合适的。

在我的 Solr 测试安装中,我索引了一组 10 个文档。然后我对其中一个文档进行了更改,并希望在索引中替换具有相同 ID 的文档。当我搜索时,这可以正常工作并按预期运行。

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

getSolrServer().deleteById(document.getIndexId());
getSolrServer().add(document.getSolrInputDocument());
getSolrServer().commit();

但我注意到的是,当我查看 Solr 服务器的统计信息页面时,这些数字并不是我所期望的。

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

阅读文档时,我看到

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

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

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

谢谢 :)

4

1 回答 1

6

你必须优化你的索引

请注意,优化是广泛的,您可能不应该每天都这样做。

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

http://www.lucidimagination.com/search/document/CDRG_ch06_6.3.1.3

http://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerations

于 2010-06-16T15:15:15.160 回答