我在一個代表金錢的MySQL表中有一個小數列。我想使用數據導入處理程序將這些數據導入Solr。我不確定存儲這些數據的最佳方式是什麼。我曾想到這些選項:在Solr中索引代表貨幣的小數的最佳方法是什麼?
浮點:會引入不準確。
字符串:會使搜索範圍變得困難。
Int:在索引前需要將每個數字乘以100,並在檢索時除以100。
貨幣:新到Solr 4.0。這種字段類型是否合適,還是用於金錢轉換?
我正在使用Solr 4.0.0。
我在一個代表金錢的MySQL表中有一個小數列。我想使用數據導入處理程序將這些數據導入Solr。我不確定存儲這些數據的最佳方式是什麼。我曾想到這些選項:在Solr中索引代表貨幣的小數的最佳方法是什麼?
浮點:會引入不準確。
字符串:會使搜索範圍變得困難。
Int:在索引前需要將每個數字乘以100,並在檢索時除以100。
貨幣:新到Solr 4.0。這種字段類型是否合適,還是用於金錢轉換?
我正在使用Solr 4.0.0。
根據Solr Wiki上CurrencyField定義的信息。這種字段類型聽起來像是適合您的解決方案。它提供了資金轉換,但只有在您選擇使用該功能時纔是如此。請注意,此範圍類型尚未提供範圍分面。
由於Paige建議,CurrencyField
是適當的領域使用。
但是,如果您需要按範圍分面,可以使用第二個浮點字段,indexed = true,stored = false,並使用copyfield將原始字段複製到浮點字段。然後,您可以使用此不準確的浮點字段進行範圍查詢,並將原始貨幣用於其他所有內容。
您是否知道CurrencyField(Decimal-> CurrencyField)是否存在數據導入處理程序轉換器? – Kevin
看起來像NumberFormatTransformer通過'formatStyle'屬性與貨幣字段類型一起工作 - http://wiki.apache.org/solr/DataImportHandler#NumberFormatTransformer –
這是用於將貨幣格式的字符串轉換爲十進制數字(而不是其他方式)。我今天已經嘗試過了。 – Kevin