背景
维护之前的Solr集群,由于业务需要,新增了两个字段,都是多值字段。
数据的增量、全量导入程序用的是Solr自己的DIH(Data Import Handler),数据源是MySQL。
由于Solr字段是多值的,结果需要时一个list,而数据源是中每个字段存储的是一个字符串,每个属性用,
分隔。
解决方法
在DIH中,可以对entity
指定transformer
,这里我们需要用到的就是其中一种RegexTransformer
,这里我们需要修改data-config.xml
。
- 在
entity
标签中加入如下属性,指定相应的解释器
(我自己的理解哈,感觉比转换器更好理解)。这里可以根据需要添加不同的解析器
,多个解析器之间以,
分隔,他们按照填写的先后顺序执行,每种解释器
基本上都只会解析它功能下的几个属性,比如RegexTransformer
,只会解析regex
和splitBy
。
transformer="RegexTransformer"
transformer="RegexTransformer,DateFormatTransformer"
- 在
entity
下加入field
标签
<field column="solr_field_name" sourceColName="database_field_name" splitBy="," />
- 更新
data-config.xml
后,重新使用DIH导入数据发现相应的字段已经以多值的形式添加到solr中了。
网友评论