0

我正在使用 sphinx xmlpipe 和 rake 任务在 ms 单词文件中搜索,以便为他获取格式化的 xml。当我遇到问题时。基本上我所做的是用 MIME::Types.type_for 检测文件类型,如果这个文件 doc 或 docx 用 catdoc 读取它或提取它的 word/document.xml,问题是当任务返回 xml 中的特定条目时,sphinx 无法索引,他以 xml 解析错误结束:

XML parse error: not well-formed (invalid token)

当我查看返回的任务时,我发现索引在看起来像二进制数据条目的行上中断。我可以从文本中过滤二进制数据,或者至少用它们检测文档,以便 sphinx 可以完成索引?

4

1 回答 1

0

经过额外的谷歌搜索,我终于找到了解决方案。

string.scan(/.*?((?:[\t\n\r\x20-\x7E])+|(?:\xD0[\x90-\xBF])+|(?:\xD1[\x80-\x8F])+|).*?/);

此正则表达式将仅选择标准 ASCII 符号和西里尔多字节 UTF-8 字符(俄语/保加利亚语)。而这个正则表达式:

/.*?((?:[\t\n\r\x20-\x7E])+|(?:\xD0[\x90-\xBF])+|(?:\xD1[\x80-\x8F])+|(?:\xC3[\x80-\xBF])+|).*?/

允许您选择其他方言字符,例如带分音符号的 UTF-8 拉丁字母、波浪号?比如:“ä”、“ö”、“ü”</p>

非常感谢这个家伙的博客:http ://blog.famzah.net/2010/07/01/filter-a-character-sequence-leaving-only-valid-utf-8-characters/我找到了答案 <3 <3 <3

于 2013-05-06T07:25:06.043 回答