西班牙字符的 Solr IOException(电影示例)

Solr IOException on spanish characters (films example)

规格:Solr 7.7.1。 Ubuntu Linux 18.04.

我一直在按照本教程 https://www.youtube.com/watch?v=5gPhZm9XzAY&feature=youtu.be 简单地创建一个 solr 核心和 post 来自 Solr 打包的电影示例的数据。

我用了命令 bin/post -c films example/films/films.xml 并在第 6 个文档上收到以下错误。

<str name="msg">ERROR: [doc=/en/quien_es_el_senor_lopez] Error adding field 'name'='¿Quién es el señor López?' msg=For input string: "¿Quién es el señor López?"</str>
  <int name="code">400</int>
</lst>
</response>
SimplePostTool: WARNING: IOException while reading response: java.io.IOException: Server returned HTTP response code: 400 for URL: http://localhost:8983/solr/films/update

这与西班牙语字符有关吗?这看起来很奇怪,因为这是一个预打包的 Solr 示例并且在教程中有效。我的设置有问题吗?

edit* solr日志中的错误如下

2019-03-16 14:21:32.097 INFO  (qtp802600647-22) [   x:films] o.a.s.s.ManagedIndexSchema Upgraded to managed schema at /home/mcgoy/solr-7.7.1/server/solr/films/conf/managed-schema
2019-03-16 14:21:32.454 INFO  (qtp802600647-22) [   x:films] o.a.s.u.p.LogUpdateProcessorFactory [films]  webapp=/solr path=/update params={}{add=[/en/45_2006 (1628172286382047232), /en/9_2005 (1628172286626365440), /en/69_2004 (1628172286630559744), /en/300_2007 (1628172286632656896), /en/2046_2004 (1628172286636851200)]} 0 1044
2019-03-16 14:21:32.487 ERROR (qtp802600647-22) [   x:films] o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: ERROR: [doc=/en/quien_es_el_senor_lopez] Error adding field 'name'='¿Quién es el señor López?' msg=For input string: "¿Quién es el señor López?"
...
Caused by: java.lang.NumberFormatException: For input string: "¿Quién es el señor López?"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at org.apache.solr.schema.DoublePointField.createField(DoublePointField.java:156)
    at org.apache.solr.schema.PointField.createFields(PointField.java:250)
    at org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:65)
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:171)

如果我尝试在全新的 Solr 核心上导入文件,我会遇到同样的错误:

$ solr create -c films
$ post -c films example/films/films.xml 

但是,如果我在 导入数据之前向核心 添加一个字段,post 将正常工作,这在 README.txt 中进行了描述电影示例:

$ solr delete -c films
$ solr create -c films
$ curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{
    "add-field" : {
        "name":"name",
        "type":"text_general",
        "multiValued":false,
        "stored":true
    },
    "add-field" : {
        "name":"initial_release_date",
        "type":"pdate",
        "stored":true
    }
}'

$ post -c films example/films/films.xml 

错误消息告诉您 Solr 已为您提交的字段添加了一个字段类型作为双字段。当您提交的第一个文档在该字段中有一个数值,并且您没有添加明确的字段类型时会发生这种情况 - 因为这将需要 Solr 猜测字段类型(即无模式模式处于活动状态)。

Caused by: **java.lang.NumberFormatException**: For input string: "¿Quién es el señor López?"
    at sun.misc.**FloatingDecimal**.readJavaFormatString(FloatingDecimal.java:2043)

无模式模式对于快速原型设计和实验很有用,但在导入实际的实时数据时,您应该始终首先定义您的字段,以避免出现这种情况。

这也是定义字段首先按预期工作的原因,因为 Solr 不必根据存在该字段的第一个文档来猜测字段类型是什么。