我想加速DIH以获得具有以下结构的solr配置:
示例:
entity:user (select * from user)
用户具有以下字段:
value_1: (select * from value where uid=user.id and category=1)
value_2: (select * from value where uid=user.id and category=2)
value_3: (select * from value where uid=user.id and category=3)
由于存在许多子查询,导入时间过长。
使用SOLR和DIH(MySQL)的最佳方法是什么?
答案 0 :(得分:0)
您可以使用SortedMapBachedCache
加快速度答案 1 :(得分:0)
我已经处理过这个完全相同的问题,但问题是MySQL和Solr的SQL DIH都没有使用字段值来帮助 name <的内置容量/ em> MySQL结果列或Solr字段。
理想情况下,您可以执行以下操作:这不起作用!
<entity name="value" query="select myfield, category from t1 where uid=${user.id}">
<field column="myfield" name="value_${value.category}">
</entity>
如果没有这种精彩的,不存在的功能,有几种方法可以获得类似的功能而不太方便。
This page显示了对创建此功能的两种不同方法的深入分析,使用ScriptTransformer(他发现它很容易实现,但却严重降低了导入速度),或{{3 (这需要你编译一个非常简短的Java片段,但显然很多更有效。
同样,TemplateTransformer可能是您想要的解决方案。
在我自己的情况下,我没有找到这个解决方案,而是写了一个简短的Java程序来发出SQL请求,构建SolrInputDocument然后分批提交给Solr。然后,当我们决定将所有值作为单个JSON编码字段放入Solr时,整个事情变得无关紧要。
祝你好运!