mysql - SOLR 中的动态数据(如计数、观看次数等)- NRT 与 Redis?

标签 mysql solr lucene redis

我们正在创建一个包含帖子的网络应用程序(类似于 FB 或 Youtube)。对于数据的稳定部分(即方面、搜索结果及其内容),我们计划使用 SOLR。

对于数据的不稳定部分(即动态和易变的内容,例如点赞数、评论数、观看数),我们应该使用什么?

选项一)Redis

如何将“动态”数据存储在不同的数据存储(如 Redis)中?因此,每次刷新计数时,我根本不必将数据重新索引到 SOLR 中。因此,SOLR 索引仅在向站点添加新帖子时触发,而不会在用户对帖子进行任何事件时触发。

旁注:- 我还在 https://github.com/sematext/solr-redis 查看了 SOLR-Redis 插件

该插件看起来不错,但不确定该插件是否可用于获取存储在 Redis 中的数据作为 solr 结果集的一部分,即在 docs 中。描述看起来更像是 Redis 数据可用于增强、排序等函数查询。有人对此有经验吗?

选项 2)带软提交的 SOLR NRT

我们将依赖内置的 NRT 功能。假设我们每秒进行一次软提交,每 10 秒进行一次硬提交。假设在网站上创建了数百个帖子的大量动态数据,例如10000 个帖子获得 100000 个赞。因此,这意味着每秒软提交 10000 行。然后每 10 秒硬提交那么多行。这不是矫枉过正吗?

哪个选项是首选?您如何在可扩展性、维护性、可行性、最佳实践等方面比较这两种选择?有任何现实生活经验或文章链接吗?

非常感谢!

附注EFF(外部文件字段)不是一个选项,因为我读到该文件中的数据只能用于函数查询,不能作为文档的一部分返回。

最佳答案

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

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

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

根据帖子:

Soft commits are about visibility, hard commits are about durability. The thing to understand most about soft commits are that they will make documents visible, but at some cost. In particular the “top level” caches, which include what you configure in solrconfig.xml (filterCache, queryResultCache, etc) will be invalidated! Autowarming will be performed on your top level caches (e.g. filterCache, queryResultCache), and any newSearcher queries will be executed. Also, the FieldValueCache is invalidated, so facet queries will have to wait until the cache is refreshed. With very frequent soft commits it’s often the case that your top-level caches are little used and may, in some cases, be eliminated. However, “segment level caches”, which include function queries, sorting caches, etc are “per segment”, so will not be invalidated on soft commit.

关于mysql - SOLR 中的动态数据(如计数、观看次数等)- NRT 与 Redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221511/

相关文章:

mysql - 创建 Spark Streaming 上下文后在 Spark 中缓存 RDS 数据

php - str_replace 没有按预期工作

ruby-on-rails - 用 Solr 全文搜索不规则的说唱歌手名字

java - Solr - 使用 LocalSolr 支持 GIS 安装问题

performance - Lucene 内存空间索引性能不佳

c# - 是否可以取消删除 Lucene.net 索引中的文档?

c# - 如何使用自动增量键和 SqlDataAdapter 来添加数据库新行

mysql - Solr 5.1.0 - Apache TikaEntityProcessor 找不到我的文件

linux - Solr I/O 随时间增加

php - 枚举替代方案