从 5.5.4 升级到 7.7.3 后,Solr 多值字段失败

Solr multiValued Field Failing After Upgrade to 7.7.3 from 5.5.4

正在升级 Solr 7.7.3 的模式,最初在 Solr 5.5.4 中起作用。

对于这样定义的字段:
<field name="my_field" type="string" indexed="true" stored="true" multiValued="true" />

Solr 收到来自 Python 网络应用程序的字典,其中包含的值最初是来自表单文本框的 csv 样式字符串:
“魔法值,Visual-C PlusPlus,ABC123”

我用逗号(和 trim 空格)拆分了字符串。然后 Solr 将 my_field 的值作为数组接收。

这在 Solr 5.5.4 中有效。 Solr 7.7.3 在重建其索引时抱怨该字段,其中:
“非多值字段 my_field 遇到多个值:[Magic Value, Visual-C PlusPlus, ABC123]”

我首先实现了上述数组修复来解决这个错误。为什么它会随着版本更改而再次中断? Solr 期望什么?

鉴于 multiValued 的大多数文档,或者给出对上述错误的大多数答案,我唯一能猜到的是 Solr 似乎期望与 my_field 同名的实际多个项目(我可以' t 从 Python dict 做。

从根本上说,问题是在较新版本的 Solr 中默认转向托管模式。

我终于发现 Solr 没有使用我正在更新的 schema.xml 文件。它坚持使用它已经在 .../myCore/conf 目录中创建的托管模式文件。删除托管模式使 Solr 重新创建它,然后在我尝试重新索引后导致指出.../myCore/conf 文件中所需的各种其他更新,例如 solrconfig.xml。 (另外,需要注意的是,我无法判断 Solr 在创建托管模式后将 schema.xml 移动到 schema.xml.bak,因为托管模式已经存在,而且我们还有一个部署脚本可以将 schema.xml 到 link 到它在我们的 repo 部署的配置目录中的位置。)

因此,请注意对核心配置文件的必要更新,以及对使用托管架构的任何更改。