4

我有来自 MySQL 数据库的多个实体,它们将在 SOLR 中被索引。

为了获得最佳性能结果(查询时间),最好的方法是什么?

  • 使用带有实体类型字段的单个 SOLR 集合(核心)
  • 或者为每个实体类型拥有一个集合(核心)

谢谢

4

1 回答 1

4

我会添加更多参数供您考虑(主要是不鼓励每个实体使用一个核心方法,但不仅仅是出于您特别要求的性能原因)

  1. 更多的核心意味着更多的端点。您的应用程序需要了解这一点。您可能会发现跨内核运行查询很困难。例如,如果您通过一个通用属性(比如名称)进行搜索,您将不得不对每个核心运行多个查询并聚合结果。这将错过您在查询单个核心时开箱即用的相关性方面。

  2. 考虑向您的数据库发出最少的请求。N+1 jdbc 连接大大减慢了索引速度。相反,尝试在视图中聚合您的结果,如果您可以触发单个查询,您的索引将更快。

  3. 跨核心将无法对公共属性进行范围查询。例如 - 如果您有存储在不同内核中的书籍和音乐 Cd 的价格,您无法获得 X 和 Y 价格范围之间的所有产品。

  4. 刻面功能也将受到影响。

因此,虽然您可能会通过以每个实体 1 个核心的形式进行并行化来获得一些索引时间性能提升,但我认为这可能会减少您可以从中受益的功能。

于 2013-03-13T16:31:52.343 回答