我有一个 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
我有相同的不同的大值。
也尝试将类型更改为 double with is 64,但也不起作用。
我正在使用 solr 5.3 和 solrj 5.3
最佳答案
您不是在索引长整型,而是在索引 double 型。这意味着在内容到达 Solr 之前,您可能会将其作为 double 值存储在某处。
当存储为 double 时,3954983690244748504
只能表示为3.9549836902447483e+18
(或者没有科学记数法,3954983690244748300
),与您的第二个号码匹配。
double 并不精确,它们是一个近似值 - 对于非常大的数字也是如此。
关于java - solr保存大长的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32504049/