2014-10-17 38 views
2

我在cassandra中使用十進制值類型來存儲貨幣(對應於BigDecimal,reasonably precise number type for this use case)。在Cassandra中以十進制存儲貨幣並通過DSE搜索索引(SolR)

我似乎無法索引此字段。我試圖與之匹配的SolR數據類型是「CurrencyField」,然後浮動。該錯誤消息是幾乎相同的:

Solr的輸入文字,並且卡桑德拉類型:小數不匹配場

CurrencyField似乎預期某種貨幣和值的元組。這使得必須將貨幣值存儲爲C *中的字符串才能夠正確地對其進行索引?作爲一種解決方法,我可以將值存儲兩次,即小數和字符串,儘管我不喜歡使更新和其他處理複雜化的冗餘。感謝您的建議...

+0

不知道BCDIntField將工作 – phact 2014-10-20 14:00:57

回答

0

嘗試使用double或float。如果你打算做範圍掃描使用該線索Solr的字段:

TrieDoubleField雙

TrieFloatField浮

參考文檔:http://www.datastax.com/documentation/datastax_enterprise/4.5/datastax_enterprise/srch/srchSolrType.html

+0

我想存儲數字的精確表示,請查看 http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency – omnibear 2014-10-20 15:38:27

+0

目前尚不支持。現在你可能想要有兩個字段。 – phact 2014-11-05 18:57:43

+0

@phact你知道是否以及何時會添加支持嗎?使用float,double,tfloat和tdouble,我會得到類似的錯誤消息: '''Solr類型float和Cassandra類型:decimal不匹配字段:amount''' – 2015-04-21 13:56:43