Solr IOException关于西班牙语字符(电影示例)

时间:2019-03-16 14:39:42

标签: search solr lucene

规格:Solr 7.7.1。 Ubuntu Linux 18.04。

我一直在遵循本教程https://www.youtube.com/watch?v=5gPhZm9XzAY&feature=youtu.be来创建一个Solr核心并发布与Solr打包的电影示例中的数据。

我使用了命令 bin/post -c films example/films/films.xml并在大约第六份文档上收到以下错误。

<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)

2 个答案:

答案 0 :(得分:2)

该错误消息告诉您Solr为您要提交的字段添加了字段类型,该字段类型为double字段。当您提交的第一个文档的字段中具有数字值,并且您没有添加显式字段类型时,就会发生这种情况-因为这将要求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不必再根据存在该字段的第一个文档猜测字段类型。

答案 1 :(得分:1)

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

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

但是,如果我在导入数据之前在 中向核心添加了一个字段,则该帖子可以正常工作,这在电影示例的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