在尝试将从pdf文件中提取的数据发布到亚马逊云搜索域进行索引时,索引因数据中的无效字符而失败。
如何在发布到搜索结束点之前删除这些无效字符?
我试图逃避并更换字符,但没有用。
答案 0 :(得分:1)
在将文档上传到CloudSearch时(使用aws sdk / json)时出现这样的错误:
字段content_stemmed的源错误:字段'content_stemmed'的验证错误:无效的代码点B
AWS所记录的针对我的解决方案(请参阅以下内容)是在上传之前从文档中删除无效字符:
例如,这就是我使用javascript所做的:
const cleaned = someFieldValue.replace(
/[^\u0009\u000a\u000d\u0020-\uD7FF\uE000-\uFFFD]/g,
''
)
ref:
JSON和XML批处理只能包含在XML中有效的UTF-8字符。有效字符为控制字符选项卡(0009),回车符(000D)和换行符(000A),以及Unicode和ISO / IEC 10646的合法字符。FFFE,FFFF和代理块D800–DBFF和DC00– DFFF无效,将导致错误。
您可以使用以下正则表达式匹配无效字符,以便将其删除:/ [^ \ u0009 \ u000a \ u000d \ u0020- \ uD7FF \ uE000- \ uFFFD] /
答案 1 :(得分:0)
我已使用可用的解决方案here
解决了问题RE_XML_ILLEGAL = u'([\u0000-\u0008\u000b-\u000c\u000e-\u001f\ufffe-\uffff])' + \
u'|' + \
u'([%s-%s][^%s-%s])|([^%s-%s][%s-%s])|([%s-%s]$)|(^[%s-%s])' % \
(unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff),
unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff),
unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff))
x = u"<foo>text\u001a</foo>"
x = re.sub(RE_XML_ILLEGAL, "?", x)