我正在尝试使用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
答案 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" />
我不知道为什么这是有效的。