我如何让Solr导入包含嵌入式特殊字符(即“〈”字符)的文件中的所有文本?

f45qwnt8  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(194)

我正在尝试将文本数据导入XML文件(示例如下)导入Solr。除了任何带有“〈”字符的文本外,一切都正常。我尝试使用〈来转义这些字符,但当同一行中的文本包含XML打开标记char“〈"时,它仍然返回错误“Unexpected char '@'。Solr消息指示它需要一个空格,或“〉”或“/〉"。
我正在生成XML文件,并可以做任何需要的预解析。但在这一点上,我真的不确定除了在处理它们时简单地删除它们之外还能做什么。从我在Solr书籍中读到的内容来看,似乎StandardTokenizerFactory将处理这种类型的信息,因为它在电子邮件中非常常见。我认为该工厂将处理这种信息以及URL。然而,Solr也返回了http://www.test.com的名称空间错误。但这显然也与“〈”字符的存在有关。
我是否遗漏了一些简单的东西?这些看起来像是标准的字符模式,不应该产生错误。希望有人知道我在哪里混淆了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>
ymdaylpp

ymdaylpp1#

nitrin 0提供的答案是,通过将字符“〈”转义为“〈”以及XML解析器可能错误解释的其他字符,确保XML数据格式良好且有效。
字符转换应如下所示(在以下XML标准中):

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

此外,可以考虑使用CDATA来确保XML数据得到正确处理。
Tx到nitrin 0寻找解决方案!

相关问题