【问题标题】:What is the best way to index a decimal representing money in Solr?在 Solr 中索引代表货币的小数的最佳方法是什么?
【发布时间】:2012-11-12 00:42:11
【问题描述】:

我在 MySQL 表中有一个十进制列,它代表金钱。我想使用数据导入处理程序将这些数据导入 Solr。我不确定存储这些数据的最佳方式是什么。我已经想到了这些选项:

浮点数:会引入不准确性。

字符串:会使搜索范围变得困难。

Int:要求每个数字在被索引之前乘以 100,并在检索时除以 100。

货币:Solr 4.0 的新功能。此字段类型是否合适,还是用于货币转换?

我正在使用 Solr 4.0.0。

【问题讨论】:

    标签: mysql solr dih solr4


    【解决方案1】:

    基于 Solr Wiki 上 CurrencyField 定义中的信息。此字段类型听起来像是适合您的解决方案。它提供货币转换,但前提是您应该选择使用该功能。请注意,该字段类型尚不支持按范围分面。

    【讨论】:

    • 你知道CurrencyField(Decimal->CurrencyField)是否有Data Import Handler转换器吗?
    • 看起来 NumberFormatTransformer 通过formatStyle 属性适用于货币字段类型 - wiki.apache.org/solr/DataImportHandler#NumberFormatTransformer
    • 这是用于将货币格式的字符串转换为十进制数(而不是相反)。我今天已经试过了。
    • 对不起,我不知道十进制->货币转换器。
    • 不用担心。我会将问题标记为已回答,因为转换是相关但独立的。谢谢。
    【解决方案2】:

    正如 Paige 所建议的,CurrencyField 是适合使用的字段。

    但如果您需要按范围分面,您可以使用第二个浮点字段,indexed=true,stored=false,并使用copyfield 从原始字段复制到浮点字段。然后,您可以将这个不准确的浮点字段用于按范围查询的分面,并将原始货币字段用于其他所有查询。

    【讨论】:

      猜你喜欢
      • 2021-04-06
      • 1970-01-01
      • 2016-07-09
      • 2020-05-09
      • 2012-02-28
      • 2010-10-11
      • 2017-08-28
      • 2016-01-27
      相关资源
      最近更新 更多