我们正在创建一个包含帖子的网络应用程序(比如FB或说Youtube) . 对于稳定的数据部分(即方面,搜索结果及其内容),我们计划使用SOLR .
我们应该对数据的不稳定部分使用什么(即动态和易变的内容,如Like count,Comments count,Viewcounts)?
选项1)Redis
将“动态”数据存储在不同的数据存储(如Redis)中怎么样?因此,每次刷新计数时,我都不必将数据重新索引到SOLR中 . 因此,仅当新帖子添加到站点时才会触发SOLR索引,并且永远不会触发用户对帖子的任何活动 .
旁注: - 我也在https://github.com/sematext/solr-redis查看了SOLR-Redis插件
该插件看起来不错,但不确定该插件是否可用于获取存储在Redis中的数据作为solr结果集的一部分,即在docs中 . 描述看起来更像是Redis数据可以在函数查询中用于提升,排序等 . 任何人都有这方面的经验?
选项2)具有软提交的SOLR NRT
我们将依赖于内置的NRT功能 . 假设我们每秒进行一次软提交,每10秒进行一次硬提交 . 假设在数百个帖子上在网站上创建了大量的动态数据,例如: 100000个喜欢10000个帖子 . 因此,这意味着每秒对10000行进行软提交 . 然后每隔10秒硬提交那么多行 . 这不是太过分了吗?
哪个选项更受欢迎?您如何在可扩展性,维护,可行性,最佳实践等方面比较两种选择?任何真实的经历或文章链接?
非常感谢!
附: EFF(外部文件字段)不是一个选项,因为我读到该文件中的数据只能用于函数查询,不能作为文档的一部分返回 .
1 回答
我建议您使用redis来获取经常变化的数据 . 关于Solr软件提交要记住的一件事是它们使一些缓存数据无效,如果你有很多缓存数据;打开一个新的搜索器并构建新的缓存可能会比你喜欢的时间更长 .
Solr非常适合全文搜索和浏览需要标记化的数据 . 它也很快;但我不认为这是这项工作的正确工具 .
您还可以查看此博客文章,了解有关Solr提交的更多信息 . https://lucidworks.com/blog/2013/08/23/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/
按照帖子: