0

所以,使用 solr 4.0

我有一个相当直接的实体设置,有 1 个子实体(1:N 关系)

要导入的数据位于 mysql 服务器上

主表约3000万条记录子表约500万条记录(大部分父实体没有子实体,其余一般只有一个1)

我遇到了相当糟糕的索引(导入)性能。每秒大约 80 个实体(文档)。所以要索引这张表,理论上需要几天时间。

现在从我所看到的 solr 报告来看,例如,如果我告诉它索引前 1000 个实体,它实际上会向 sql 发出 1000 多个查询。我也尝试过为数据源设置 batchSize 属性,但没有成功......只有 -1 有效(否则内存不足异常)。

真的不知道我能做些什么来优化这个,mysql没有合适的数据导入器吗?

4

2 回答 2

1

您可以使用CachedSqlEntityProcessor以便至少缓存子实体查询...

于 2012-09-24T15:12:18.370 回答
0

认为 cachedEntity 方法在另一个问题上帮助了我,我发现使用嵌套实体通常不仅仅是可行的。

为每个“根”实体触发子实体查询的逻辑永远不会起作用。

我已经将我的语句重写为 SQL JOIN,它将根实体和子实体作为单行获取并相应地映射到字段,性能显着提高。

于 2012-09-27T16:13:40.710 回答