Solr 关于加载 Schema 更改的问题

Solr Question about Loading Changes to Schema

我是 Solr 的新手,在通过 pysolr 添加文档时收到以下错误:

pysolr.SolrError: Solr responded with an error (HTTP 400): [Reason: ERROR: [doc=bc4aa768-6f35-4888-80e0-1578d9971b3c] Error adding field 'periodical_nlm'='2984692R' msg=For input string: "2984692R"]

我最终发现添加的第一个 periodical_nlm 值是 404536.0,所以我认为这是一个类型问题。在 Python 中,我然后在添加 2984692R 之前将每个 periodical_nlm 显式转换为字符串。但是,错误仍然存​​在。

我用 Google 搜索了一下,发现我应该明确地告诉 Solr 我希望该字段是一个字符串。我对架构还不是很了解 "hands on",所以我有一些问题:

(1) 似乎有两个架构文件:核心目录中的 managed-schema 和核心 conf 文件夹中的 managed-schema。我假设正在使用的初始化模式是 conf 文件夹中的模式?

(2) 为了顺利进行,我应该更新哪个?我尝试将以下内容添加到核心目录中的架构文件,但错误仍然存​​在:

field name="periodical_nlm" type="string" indexed="true" stored="true" required="false" multiValued="false" />

我是否需要重新运行一些初始化过程或单独向 conf 文件中添加一些内容?

非常感谢,如果您需要更多信息,请告诉我。我 运行 在 Windows 10 Home x64 平台上使用(不确定这是否重要,如果我需要 运行...)。

只要在更改conf下的managed-schema文件后重新加载核心就可以了。请注意,您应该在 之前 对内容进行索引 - 因此您可能需要通过删除所有内容来清理索引,然后更改架构并重新索引您的内容。更改架构不会更改已编入索引的内容。

否则你的假设是正确的,无模式模式(类型由提交的第一个值的格式决定(不是类型 - 因为通常不以任何方式包含,所有值在被提交时都只是字符串已提交,因此 Solr 会尝试通过应用模式匹配的层次结构来猜测类型))对于原型制作很有用 - 当您转向生产时,您应该始终明确定义模式以避免出现您在此处看到的问题。