【问题标题】:Running multiple Solr instances vs using classes运行多个 Solr 实例与使用类
【发布时间】:2016-10-30 21:29:18
【问题描述】:

所以,在我目前的项目中,我们有两个类——比如苹果和橙子。它们相互关联,用户总是要购买苹果,但他们可以在购买的苹果中添加橙子。

我们已经在为苹果编制索引并对其进行搜索。我们现在想设置一个补充“您想添加到您的订单吗?”类型的东西。

问题是是将这些橙子添加到现有索引中(全是苹果),还是创建一个新索引?性能影响是什么?我认为如果它们在同一个索引中,我们最终可以在同一个查询中返回它们,方法是像type: apples OR oranges?

【问题讨论】:

  • 不清楚您想如何使用 Oranges。你在寻找他们吗?通常,如果您不搜索它,则根本不需要将其放入索引中,除非您的索引也是您的主数据存储。也许您需要支持一个搜索,例如“给定一个特定的苹果,搜索与之配套的橙子?”
  • Given a particular Apple, search for the Oranges that go with it? -- 是的,这正是我们所需要的。实际上,它更像是“给定一个特定的苹果,找出半径 100 公里内的所有橙子”。所以是的,我们正在对其进行索引以进行搜索。

标签: apache search elasticsearch indexing solr


【解决方案1】:

这是一个有点主观的问题,所以这里有一些决定因素:

  • 如果您需要同时查询两者,或者希望使用相同的索引。 (或者集合,如果 SolrCloud - 您实际上可以在一个查询中查询两个 SolrCloud 集合,但相关性排序可能很奇怪。)
  • 如果 Apples 和 Oranges 的架构有所不同,或者您希望如此,这就是不同索引的重点
  • 与其他标准相比,type:apples 过滤器听起来不太可能消除大部分文档集。它可以保存在 filterCache 中,速度很快,但是在结合非限制性过滤器查询和高度限制性查询时,我得到了一些奇怪的性能结果。唯一具体的答案是在您的特定索引上运行测试。
  • Solr/Lucene 的某些内存方面随索引大小而不是查询结果大小而扩展。索引越大,GC 调整就越重要。如果可以的话,这是优先选择不同索引的一点。

【讨论】:

  • 谢谢,这很有帮助。您知道在一个 Solr 实例上设置多个索引的任何指南吗?
  • 没有什么说你不能在单个节点上运行 solrcloud,这使得处理多个索引更容易。如果没有,您可能会使用核心 api:cwiki.apache.org/confluence/display/solr/CoreAdmin+API
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
相关资源
最近更新 更多