java - MongoDB + Solr performances
我一直在四处寻找如何将MongoDB与Solr结合使用,这里的一些问题有部分回应,但没有真正具体的(更像是理论)。在我的应用程序中,我将在MongoDB中存储大量文档(可能高达数亿个),并且我想在这些文档的某些属性上实现全文搜索,所以我想Solr是最好的方法。
我想知道的是我应该如何配置/执行所有内容,以便它具有良好的性能?现在,这就是我所做的(我知道它不是最佳的):
1-在MongoDB中插入对象时,我将其添加到Solr中
SolrServer server = getServer();
SolrInputDocument document = new SolrInputDocument();
document.addField("id", documentId);
...
server.add(document);
server.commit();
2-更新对象的属性时,由于Solr不能只更新一个字段,因此首先我从MongoDB检索对象,然后使用对象和新属性更新Solr索引,并执行类似操作
StreamingUpdateSolrServer update = new StreamingUpdateSolrServer(url, 1, 0);
SolrInputDocument document = new SolrInputDocument();
document.addField("id", documentId);
...
update.add(document);
update.commit();
3-查询时,首先我查询Solr,然后在检索文档列表时,我浏览每个文档并:SolrDocumentList
- 获取文档的 ID
- 从MongoDB获取具有相同ID的对象,以便能够从那里检索属性
4-删除时,我还没有完成该部分,并且不确定如何在Java中执行此操作
因此,对于此处描述的每个方案,有没有人对如何以更有效的方式执行此操作提出建议?就像在Solr中拥有大量文档并一次添加一个文档时不需要1小时即可重建索引的过程一样?我在这里的要求是,用户可能希望一次添加一个文档,很多时候,我希望他们能够立即检索它