java - solr保存大长的错误值

标签 java solr solrj

我有一个 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/

相关文章:

java - SharedPreferences getString 返回 null

ruby-on-rails - 条件 order_by 取决于 Sunspot 中的数据

hadoop - hbase-indexer solr numFound 与 hbase 表行大小不同

java - Solr 4.0 和资源加载器 : getLines undefined

solr - 来自 Solrj 的引用格式 json

java - 使用 solrj 凭证连接到 solr 服务器

java - 数据未使用 hibernate 插入,但没有给出错误?

java - 文件上传及读取

java - 如何避免超过工作表上允许的最大行数 jxl 中的异常

java - Solr DataImportHandler - Oracle 日期 - 夏令时