如何使用Solr的CurrencyField并避免“缺少必填字段”错误

时间:2012-11-12 20:57:08

标签: solr

我正在尝试使用Solr的CurrencyField。我使用示例Solr实例(apache-solr-4.0.0 / example / solr / collection1)来测试CurrencyField。我在schema.xml中添加了一个字段,如下所示:

<field name="money" type="currency" indexed="true" stored="false" required="true" multiValued="false" />

但是,在发布XML文件时:

<doc>
    <field name="id">12344321</field>
    <field name="text">4312341</field>
    <field name="money">1.30,USD</field>
</doc>

我收到以下错误:

SEVERE: org.apache.solr.common.SolrException: [doc=4312341] missing required field: money

为什么我会收到此错误,我该如何解决?

我正在使用Solr 4.0.0

2 个答案:

答案 0 :(得分:3)

Paige是正确的:您收到此错误,因为CurrencyField是一个PolyField。

以下文档显示三个字段:字段“money”,以及两个特殊动态字段“__raw_amount”和“__currency”。

<doc>
    <field name="money">1.30,USD</field>
</doc>

保持“钱”字段不存储的解决方法是将其包含为动态字段。

<dynamicField name="*_c" type="currency" indexed="true" stored="false" />

我的猜测是,Solr动态生成原始金额和货币的新存储字段。

也就是说,这个问题是邮件列表的一个很好的候选人。

答案 1 :(得分:0)

经过大量的反复试验后,我发现了一个解决方案:money字段必须在schema.xml中存储=“true”。

<field name="money" type="currency" indexed="true" stored="true" required="true" multiValued="false" />

我不知道为什么这是有效的。