Solr - 有没有办法加快我的导入速度

时间:2013-06-27 07:01:49

标签: search solr full-text-search full-text-indexing

我有一个关系数据库模型 这是我的data-config.xml

的基础知识
<entity name="MyMainEntity" pk="pID" query="select ... from [dbo].[TableA] inner join TableB on ...">
    <entity name="Entity1" pk="Id1" query="SELECT [Text] Tag from [Table2] where ResourceId = '${MyMainEntity.pId}'"></entity>
            <entity name="Entity1" pk="Id2" query="SELECT [Text] Tag from [Table2] where ResourceId2 = '${MyMainEntity.pId}'"></entity>
    <entity name="LibraryItem" pk="ResourceId" 
            query="select SKU
                    FROM [TableB] 
                    INNER JOIN ...
                    ON ...
                    INNER JOIN ...
                    ON ...
                    WHERE ... AND ...'">
    </entity>
</entity>

现在,这需要花费很多时间 第一个查询中有10000行,然后每个其他内部实体稍后被提取(每个大约10行)。

如果我使用数据库分析器,我会看到三个内部实体查询一遍又一遍地运行(3个选择句子而不是3个选择句子一遍又一遍)
这真的没有效率 进口可以超过40小时() 现在,
我有什么选择更快地运行它。

  1. 显然有一个选项可以将表格平放到一个大表 - 但这会产生很多其他副作用。我真的想避免这种额外的努力,并在我的生产关系表上运行solr 到目前为止它开箱即用,我在这里搜索是否有配置调整。
  2. 如果我将行平放 - schema.xml是否也需要更改?或者多值的相同字段将保持多值。
  3. 感谢。

1 个答案:

答案 0 :(得分:1)

在不更改数据库架构的情况下,首先要尝试的是caching。如果内部实体缓存良好,则收益将是巨大的。

也许维基不是最新的,所以你应该检查jira问题,即solr-2382,也可以查看solr-2948

第二条路径可能是尝试多线程DIH,但它更棘手。有一点,这是可选的,但后来被删除,因为它是错误的,我认为现在有一些jira问题试图重新实现它,尝试查找,但我建议先缓存。