如何在Solr中加载使用特殊字符作为分隔符的CSV文件
问题原因
你遇到的报错核心是Solr的URL解析器要求查询参数里的非ASCII字符必须经过URL编码,你直接把Ǎ放在URL里未做转义就触发了解析失败。之前用|作为分隔符可以正常执行,是因为|属于ASCII字符,不需要编码也能被正常识别。
可行解决方案
方案1:对分隔符做URL编码后传入
Ǎ的UTF-8编码对应的URL转义结果为%C7%8D,直接替换URL里的separator参数值即可,命令如下:
curl "http://localhost:8983/solr/start13/update?commit=true&separator=%C7%8D" --data-binary @/solr/python/special_character.csv -H 'Content-type:application/csv'
方案2:将分隔符参数通过POST表单传递,避免手动编码
如果不想手动做URL编码,可以把separator参数作为POST表单参数和CSV文件分开传递:
curl "http://localhost:8983/solr/start13/update?commit=true" -F "separator=Ǎ" -F "myfile=@/solr/python/special_character.csv;type=application/csv"
方案3:配置默认分隔符(适合长期使用该分隔符的场景)
如果后续一直使用该分隔符导入CSV,可以直接修改对应Solr核心的solrconfig.xml,找到CSV更新处理器配置段,添加默认分隔符配置:
<requestHandler name="/update/csv" class="solr.UpdateRequestHandler"> <lst name="defaults"> <str name="separator">Ǎ</str> </lst> </requestHandler>
修改后重载对应核心,导入时不需要再传separator参数,直接执行即可:
curl "http://localhost:8983/solr/start13/update/csv?commit=true" --data-binary @/solr/python/special_character.csv -H 'Content-type:application/csv'
内容的提问来源于stack exchange,提问作者Kamal Vijay
相关产品推荐
相关产品推荐

