首页 文章

SOLR中的动态数据(如计数,查看数量等) - NRT与Redis?

提问于
浏览
0

我们正在创建一个包含帖子的网络应用程序(比如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 回答

  • 1

    我建议您使用redis来获取经常变化的数据 . 关于Solr软件提交要记住的一件事是它们使一些缓存数据无效,如果你有很多缓存数据;打开一个新的搜索器并构建新的缓存可能会比你喜欢的时间更长 .

    Solr非常适合全文搜索和浏览需要标记化的数据 . 它也很快;但我不认为这是这项工作的正确工具 .

    您还可以查看此博客文章,了解有关Solr提交的更多信息 . https://lucidworks.com/blog/2013/08/23/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/

    按照帖子:

    软提交是关于可见性的,硬提交是关于耐久性的 . 关于软提交最常理解的是它们会使文档可见,但需要付出一些代价 . 特别是“顶级”缓存,包括您在solrconfig.xml中配置的内容(filterCache,queryResultCache等)将失效!将在您的顶级缓存(例如filterCache,queryResultCache)上执行自动装配,并且将执行任何newSearcher查询 . 此外,FieldValueCache无效,因此facet查询必须等到刷新缓存 . 对于非常频繁的软提交,通常情况下,您的顶级缓存很少使用,并且在某些情况下可能会被淘汰 . 但是,“段级缓存”(包括函数查询,排序缓存等)是“每段”,因此在软提交时不会失效 .

相关问题