我怎样才能让 Solr 导入包含嵌入式特殊字符(即“<”字符)的文件中的所有文本?

How can I have Solr import all text in a file that contains embedded special chars (namely "<" char)?

我正在尝试将文本数据导入 XML 文件(下面的示例)以导入 Solr。除了具有“<”字符的任何文本外,一切正常。我已经尝试使用 < 来转义那些,但它仍然是 returns 错误“每当同一行上的文本包含 XML 开放标记字符“<”时出现意外字符 '@'。Solr 消息表明它期待 space、“>”或“/>”。

我正在生成 XML 文件并且可以做任何需要的预解析。但在这一点上,我不太确定除了在处理它们时简单地删除它们之外还能做什么。从我在 Solr 书籍中读到的内容来看,StandardTokenizerFactory 似乎会处理此类信息,因为它在电子邮件中很常见。我认为工厂会处理这个以及 URL。然而,Solr 还为 http://www.test.com 返回了名称 space 错误。但这显然也与“<”字符的存在有关。

我是不是遗漏了一些简单的东西?这些看起来像是不应产生错误的标准字符模式。希望有人知道我在哪里混淆了 Solr。如果我删除这几个字符,索引就可以正常工作。但是对于数百个文件,我需要一个强大的解决方案,即使这意味着删除字符。但是,希望这不是最后的手段,因为我想保留尽可能多的索引信息。

感谢您提供有关此问题的任何线索!

<update>
<add>
        <doc>
                <field name="id">001</field>
                <field name="text_en"> Sample info
                     John Smith <j.smithcha@abc.com>
                     additional info here...
                </field>
        </doc>
        <doc>
                <field name="id">002</field>
                <field name="text_en"> Some special <(*&!^ characters/> here  </field>
        </doc>
</add>
</update>

nitrin0 提供的答案是通过将字符“<”转义为“<”以及其他会被错误解释的字符来确保 XML 数据格式正确且有效XML 解析器。

字符翻译应如下所示(符合XML标准):

<    &lt;   (less than symbol)
>    &gt;   (greater than symbol)
&    &amp;  (ampersand symbol) 
'    &apos;     (apostrophe symbol)
"    &quot; (quotation mark symbol)

此外,可以考虑使用 CDATA 来确保 XML 数据得到正确处理。

Tx to nitrin0 寻找解决方案!