2015-09-10 30 views
1

錯誤的值我有一個領域的Solr模式中長型Solr的儲蓄大長

<field name="source_raw_hash" type="long" indexed="true" stored="true"/> 

長型的模式是默認:

<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> 

我保存到索引solrJ,值:3954983690244748504到這個字段,但它被保存爲3954983690244748300

我有不同的大值相同。

嘗試過轉換類型爲64以及也沒有工作。

我使用Solr的5.3和5.3 solrj

回答

1

你不是索引多頭,你索引雙打。這意味着在內容點擊Solr之前,您可能會將它存儲爲雙倍的地方。

當以雙數形式存儲時,3954983690244748504只能表示爲3.9549836902447483e+18(或不帶科學計數法,3954983690244748300),它與您的第二個數字相符。

雙打不準確,他們是一個近似值 - 當涉及到非常大的數字。

+0

爲什麼'fieldType'定義長時間使用'TrieLongField'?如果這是使用double,那麼如何存儲長值?該文件定義了「允許的最小值:-9223372036854775808」和「允許的最大值:9223372036854775807」的限制。 [TrieLongField](http://lucene.apache.org/solr/4_4_0/solr-core/org/apache/solr/schema/TrieLongField.html)。 – YoungHobbit

+0

是的,但是你的代碼在某個方向上將它存儲爲雙精度,而不是很長。 Solr知道如何處理一個長整型值,但是如果它是一個截斷的double值,它永遠不會看到你認爲該變量具有的值。 – MatsLindh

+0

我將Solr管理界面中的相同值添加到''''''長文件中。但在結果中,我看到了截斷的值。我錯過了什麼?我如何測試Solr Admin UI 5.2中的長整型值。 – YoungHobbit