python-3.x - 关于将更改加载到架构的 Solr 问题
问题描述
我是 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 中,我periodical_nlm
在添加之前将 every 显式转换为字符串2984692R
。但是,错误仍然存在。
我用谷歌搜索了一下,发现我可能应该明确告诉 Solr 我希望该字段是一个字符串。我还没有非常“动手”使用模式,所以我有一些问题:
(1) 似乎有两个模式文件:managed-schema
在核心目录和核心文件夹managed-schema
中conf
。我假设正在使用的初始化模式是conf
文件夹中的模式?
(2) 为了让事情顺利进行,我应该更新哪些内容?我尝试将以下内容添加到核心目录中的架构文件中,但错误仍然存在:
field name="periodical_nlm" type="string" indexed="true" stored="true" required="false" multiValued="false" />
我是否需要重新运行一些初始化过程或conf
单独向文件中添加一些内容?
非常感谢,如果您需要更多信息,请告诉我。我在 Windows 10 Home x64 平台上运行(如果我需要运行任何命令行的东西,不确定这是否重要......)。
解决方案
只要在更改下managed-schema
文件后重新加载内核conf
,就可以了。请注意,您应该在索引内容之前执行此操作- 因此您可能需要通过删除所有内容来清除索引,然后更改架构并重新索引您的内容。更改架构不会更改已编入索引的内容。
否则您的假设是正确的,并且无模式模式(其中类型由提交的第一个值的格式确定(不是类型 - 因为通常不以任何方式包含它,所有值在提交时都只是字符串,所以 Solr 尝试通过应用模式匹配的层次结构来猜测类型))对于原型设计很有用 - 当您转向生产时,您应该始终明确定义模式以避免出现像您在这里看到的问题。
推荐阅读
- node.js - 使用相同的 nodejs 版本和 yarn.lock,安装frozen-lockfile 在 Ubuntu 上工作,但在 Mac 上失败
- javascript - 解析错误:意外的令牌 => 使用 Linter(Travis CI)
- java - 如何删除日志中的附加信息
- java - 在Java中,我如何在几行中初始化数组中的元素,而不是一行?
- ibm-cloud - 如何从 cloudantdb 中删除重复项?
- angular - 使用 Angular 项目时,只要打开开发人员工具,Internet Explorer 11 就会崩溃
- ios - 有什么方法可以在 swift ios 应用程序中忘记 AzureAD MSAL 中的登录帐户?
- material-ui - Material-UI Typeography gutterbottom - 增加边距
- java - 在 Spring Boot 中未调用使用 Header 和 RequestBody 消费 POST 请求的方法
- ibm-mq - 基于内容的过滤-选择器字符串-IBM MQ