2012-11-19 48 views
1

Solr是否有這樣的數據類型?我可以索引,排序,分面和執行算術運算等,如果它是浮動/雙?Solr是否有無損小數?

+0

你能解釋一下「無損」是什麼意思嗎? – stephanruhl

+0

我的不好。我的意思是浮點損失(0.7變成0.69999999999 ...)不會發生在這樣的領域。 – aitchnyu

回答

3

如果用'無損'表示精度不應該在操作中改變或丟失,那麼BigDecimal就是你的答案。請看下圖:

How to index BigDecimal values in Lucene 3.0.1

+1

我不認爲Solr模式可以用來存儲BigDouble的任意精度(不是一種有用的方式,這將允許你做範圍查詢等) –

0

好,因爲Solr的是用Java做,和Java沒有絕對losseless精度,你可能沒有得到Solr中無論是。但是,您可以嘗試TrieDoubleField,它具有與Java的double(即雙精度)相同的精度。

2

爲了錢,有一個currency field這實質上是由TrieLong支持的定點數。除了方面範圍外,它可以執行大多數算術運算。

+0

我可以使它精確(像4位小數位),因爲我想要?除了方位範圍外,還有什麼其他警告,比如速度? – aitchnyu

+0

我不認爲你可以通過簡單的配置控制小數位:_浮點值的小數部分根據貨幣通過Currency.getDefaultFractionDigits()._解釋 – prunge