我想加快solr配置的DIH,其结构如下:
示例:
实体:用户(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)的最佳方法是什么?
发布于 2015-03-13 14:30:37
发布于 2015-03-13 21:04:50
我已经处理过这个完全相同的问题,问题是MySQL和Solr的SQL都没有内置的能力来使用字段值来帮助命名MySQL结果列或Solr字段。
理想情况下,您可以这样做:--这是不工作的!
<entity name="value" query="select myfield, category from t1 where uid=${user.id}">
<field column="myfield" name="value_${value.category}">
</entity>没有这个奇妙的、不存在的特性,有几种方法可以在不太方便的情况下获得类似的功能。
此页展示了对创建此功能的两种不同方法的很好的分析,要么使用ScriptTransformer (他发现实现起来很简单,但却严重地减缓了导入),要么使用TemplateTransformer (它需要编译一个非常短的Java片段,但显然效率要高得多)。
同样,这很可能是您想要的解决方案。
在我自己的例子中,我没有找到这个解决方案,而是编写了一个简短的Java程序来发出SQL请求,构建SolrInputDocument,然后将它们批量提交给Solr。然后,当我们决定将所有的值作为一个JSON编码的字段放入Solr时,整个事情就变得无关紧要了。
祝好运!
https://stackoverflow.com/questions/29033763
复制相似问题