Solr - 缺少必填字段

时间:2012-10-10 14:26:18

标签: solr

Solr报告它缺少必填字段(documentId),但字段和值正在传递给Solr。从架构:

<fields>
   <field name="id" type="string" indexed="true" stored="true" required="true" /> 
   <field name="documentId" type="string" indexed="true" stored="true" required="true" /> 
</fields>

根据Solr日志,documentId正在传入:

org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/update/extract params={waitSearcher=true&commit=true
&literal.id=C:\documents\102\Comps+Database+BRD.docx&literal.documentId=102&w
t=javabin&waitFlush=true&version=2} status=400 QTime=489

为什么Solr会报告:

org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: [doc=C:\documents\102\test.docx]
 missing required field: documentId

修改的 修正了提取请求中的拼写错误,但仍然是同样的错误。

3 个答案:

答案 0 :(得分:5)

出于某种原因,Solr不喜欢字段名称上的“Id”后缀。当我将“documentId”重命名为“document”时,我没有错误。它也在“testId”上失败,但在我重命名为“test”时起作用。有谁知道为什么“Id”字段名称后缀会导致solr总是报告缺少必填字段,即使传递了值?

答案 1 :(得分:1)

在归档定义使用dcoumentId=

时,看起来有一个拼写错误documentId 你看到了区别吗? dco ......和doc ....

答案 2 :(得分:0)

您的字段名称应该是小写字母,例如“documentid”。如果字段名称包含大写字母,即使只有一个,solr 也不会将数据保存在字段中。在 solr 的情况下,我们不必遵循骆驼案例约定。所以教训是,如果您想创建一个字段并在其中存储数据,则需要将其设置为小写字段。例如“documentid”或“testid”而不是“documentId”或“Documentid”等