升级Solr 7.7.3的模式,最初在Solr 5.5.4中起作用。
对于定义如下的字段:<field name="my_field" type="string" indexed="true" stored="true" multiValued="true" />
Solr收到一个来自Python web应用程序的dict,其中包含来自表单文本框的csv样式字符串的值:
“魔力值,Visual-C ++,ABC123”
我将字符串拆分为逗号(并删除空格),然后Solr将my_field的值作为数组接收。
这在Solr 5.5.4中有效。Solr 7.7.3在重建其索引时抱怨字段,其中:
“非多值字段my_field遇到多个值:【魔法值,Visual-C ++,ABC123】”
我实现了上面的数组修复,以满足这个错误摆在首位。为什么它再次打破与版本的变化?什么是Solr期望?
根据大多数multiValued文档,或者根据对上述错误的大多数回答,我唯一能猜测的是Solr似乎期望实际的多个项与my_field同名(我不能从Python dict中做到这一点)。
1条答案
按热度按时间laik7k3q1#
从根本上说,问题是在Solr的新版本中默认地向托管模式的转变。
最后我发现Solr并没有使用我正在更新的schema.xml文件。它一直使用它已经创建的托管模式文件,在.../myCore/conf目录中。删除托管模式会使Solr重新创建它,然后在我尝试重新索引时,会指出.../myCore/conf文件中需要的各种其他更新,例如solrconfig.xml。(另外,需要注意的是,我无法确定Solr在创建托管模式后会将schema.xml移动到schema.xml.bak,因为托管模式已经存在,而且我们还有一个部署脚本,该脚本将schema.xml转换为指向其在config目录中的位置的链接,我们的repo将部署在该目录中。)
因此,请注意对核心配置文件的必要更新,以及对使用托管模式的任何更改。