【发布时间】:2012-11-12 00:42:11
【问题描述】:
我在 MySQL 表中有一个十进制列,它代表金钱。我想使用数据导入处理程序将这些数据导入 Solr。我不确定存储这些数据的最佳方式是什么。我已经想到了这些选项:
浮点数:会引入不准确性。
字符串:会使搜索范围变得困难。
Int:要求每个数字在被索引之前乘以 100,并在检索时除以 100。
货币:Solr 4.0 的新功能。此字段类型是否合适,还是用于货币转换?
我正在使用 Solr 4.0.0。
【问题讨论】:
我在 MySQL 表中有一个十进制列,它代表金钱。我想使用数据导入处理程序将这些数据导入 Solr。我不确定存储这些数据的最佳方式是什么。我已经想到了这些选项:
浮点数:会引入不准确性。
字符串:会使搜索范围变得困难。
Int:要求每个数字在被索引之前乘以 100,并在检索时除以 100。
货币:Solr 4.0 的新功能。此字段类型是否合适,还是用于货币转换?
我正在使用 Solr 4.0.0。
【问题讨论】:
基于 Solr Wiki 上 CurrencyField 定义中的信息。此字段类型听起来像是适合您的解决方案。它提供货币转换,但前提是您应该选择使用该功能。请注意,该字段类型尚不支持按范围分面。
【讨论】:
formatStyle 属性适用于货币字段类型 - wiki.apache.org/solr/DataImportHandler#NumberFormatTransformer
正如 Paige 所建议的,CurrencyField 是适合使用的字段。
但如果您需要按范围分面,您可以使用第二个浮点字段,indexed=true,stored=false,并使用copyfield 从原始字段复制到浮点字段。然后,您可以将这个不准确的浮点字段用于按范围查询的分面,并将原始货币字段用于其他所有查询。
【讨论】: