西班牙字符的 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 不必根据存在该字段的第一个文档来猜测字段类型是什么。
规格: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 不必根据存在该字段的第一个文档来猜测字段类型是什么。