我正在实施Solr,对一个项目进行自由文本搜索,每天都需要大量添加和删除可用于搜索的记录。
由于规模我需要确保索引的大小合适。
在我的Solr测试安装中,我索引了一组10个文档。然后我在其中一个文档中进行了更改,并希望在索引中替换具有相同ID的文档。这可以正常工作,并在我搜索时按预期运行。
我正在使用此代码更新文档:
getSolrServer().deleteById(document.getIndexId());
getSolrServer().add(document.getSolrInputDocument());
getSolrServer().commit();
我注意到的是,当我查看Solr服务器的统计信息页面时,数据并不是我所期望的。
在初始索引之后,numDocs和maxDocs都等于预期的10。但是当我更新文档时,numDocs仍然等于10(预期)但maxDocs等于11(意外)。
阅读文档时,我看到了
maxDoc可能更大,因为maxDoc计数包括尚未从索引中删除的逻辑删除文档。
所以问题是,如何从索引中删除逻辑删除的文档?
如果索引中仍然存在这些文档,那么在使用大量文档运行时,是否存在性能损失的风险?
谢谢:)
答案 0 :(得分:6)
请注意,优化是广泛的,你可能不应该每天做更多。
以下是有关优化的更多信息:
http://www.lucidimagination.com/search/document/CDRG_ch06_6.3.1.3
http://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerations