2

我正在尝试使用 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

4

2 回答 2

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 会为原始金额和货币动态生成新的存储字段。

也就是说,这个问题非常适合邮件列表。

于 2012-11-13T03:08:58.140 回答
0

经过大量的试验和错误,我发现了一个解决方案:money字段必须在schema.xml中存储了="true"。

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

我不知道为什么会这样。

于 2012-11-12T21:13:59.730 回答