我们如何使用Solr: 我们在Solr中存储了7K个文档,每个文档附带3k个属性。每个属性都被索引以便在Solr上进行搜索/排序。我们根据搜索/筛选条件从Solr中获取数据,每个文档附带400多个属性。因此,当我们尝试在Solr中搜索一些文本并设置一个属性(通过设置fl="projectId")时,它只需要1秒钟就可以在Solr控制台上显示结果,这很好。
然而,如果我们尝试为相同的搜索条件获取100多个属性(这将返回约100*3*匹配文档(约50)中的字符串,总共有4K个属性),则需要大约20秒。但是我们需要获取与匹配文档相关的400多个属性,这需要很长时间,大约90秒,之前由于OutOfMemoryError而崩溃,我们已经通过增加RAM大小和JVM堆大小来解决了这个问题。
Mysql数据与Solr同步: 目前,我们使用MySql DB作为主数据库,Solr服务器作为辅助数据库。我们通常会每天将mysql数据与Solr服务器同步。我们还会在更新Mysql DB上的任何属性时更新Solr服务器。
在应用程序中使用solr结果数据: 应用程序仪表板将包含用户预配置的列(属性)文档。用户可以应用搜索/筛选条件来填充所需结果,并在其仪表板上查看数据。因此,我们的应用程序会通过访问Solr服务器来根据搜索/筛选条件获取数据。
我们尝试了很多方法,如增加堆大小、RAM大小和CPU数量,但没有成功。数据每天都在增长,这导致了很多问题。对于小项目或少量属性,它可以正常工作,但是一旦尝试获取更多属性,它就需要太长时间,有时会崩溃。
我不确定我们是否正确使用索引?
有谁能提出更好/替代的方法吗? 提前致谢。