首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr DIH delta进口

Solr DIH delta进口
EN

Stack Overflow用户
提问于 2015-09-28 02:59:18
回答 2查看 322关注 0票数 0

我们计划在web应用中使用MySQL作为关系数据库管理系统。而且还将数据发送到Solr以支持更快的搜索。我现就建议采用哪种方法及原因征询意见:

  1. 为定期更新设置一个cron作业(比如每30分钟更新一次)--大多数教程似乎都提出了这样的建议。
  2. http post期间,向mySQL和Solr发送数据。

该应用程序将有用户张贴的评论和不同的范围属性,需要全文搜索和面。

编辑:对于那些找到了这个话题的人,solr在https://wiki.apache.org/solr/SolrPerformanceFactors上写了一篇简短的文章

EN

回答 2

Stack Overflow用户

发布于 2015-09-28 03:10:13

如果您需要为用户提供near-real时间数据,那么您应该使用第二种方法。它将更新solr索引中的数据,并使用户可以进行搜索。

如果您不需要对用户进行近乎实时的搜索,那么您应该采用第一种方法,即每30分钟更新一次索引。

但是请记住,在solr设置中,这些确实可能需要一些不同的配置。

票数 1
EN

Stack Overflow用户

发布于 2015-09-28 19:00:50

正如younghobbit所建议的那样,更深入地了解应用程序的类型,数据使得这更容易回答。

即使如此,我还是会安排一些我所知道的要点,这样你就可以做出更明智的选择了。

  1. SOLR索引不像事务处理数据库。它被设计为有效的原始文本内容搜索,在内部它做一些很好的东西来帮助搜索的速度(我不是SOLR内部的专家)。因此,SOLR专家请随时详细说明‘好的股票’)。索引用于搜索的数据的过程并不便宜,因此最好让SOLR每隔X分钟而不是所有时间执行它的索引魔术。毕竟,您希望它使用其大部分可用资源为搜索提供最相关的结果。
  2. 您可以任意频繁地向SOLR发送数据,但只有在提交之后才能使用。您可以在每次操作之后提交,也可以让SOLR每x分钟自动提交一次。(我记不起确切的配置,但我想大概15分钟左右)。提交才是真正触发资源短缺的索引过程,因此执行太多提交是不好的。另一方面,提交过少会导致过时的索引。
  3. 因为您有一个MySQL数据库,所以我猜还有一些记录也会被更新。从4.xSolr到内部SOLR,SOLR实际上并没有更新文档。SOLR处理更新的方式是将旧文档标记为已删除,并简单地创建一个新文档。这意味着每次更新都会导致SOLR在磁盘上增量地使用更多的空间。您可以偶尔调用“优化”操作,SOLR将删除已删除的文档。同样,优化是需要资源的,最好是在服务器不那么繁忙的时候进行。优化还会导致SOLR在优化过程中消耗更多的磁盘空间(规则拇指=索引大小* 2)。想象一下,如果您的MySQL记录在30分钟内更新了10次,那么如果您在每个http post上向SOLR发送数据,就会导致9个已删除文档和一个SOLR中的活动文档。然而,在一个30分钟的cron工作,它将意味着1或最多2条记录被张贴。
  4. SOLR并不完全是事务性的。它有提交和回滚操作,但它们可以处理自上次提交以来添加的所有文档。(建议阅读有关SOLR的文档)。这与您的http帖子不同,通常,在MySQL db上的回滚将在同一个http请求的范围内。例如,您在每个http post上向SOLR发送数据,假设您遇到需要回滚的场景,MySQL将执行一个干净的回滚,但是SOLR回滚是不可行的,因为它可能会回滚当前http后处理过程中所做的其他更改。

就我个人而言,我认为方法1更好,但是你可能想调整cron的频率,以获得一个近乎实时的搜索响应。真正的实时只能通过方法2来实现,但是您必须考虑如何处理与SOLR相关的更新、事务。在选择任何选项之前,请了解SOLR中的提交、回滚、优化操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32815092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档