solr-node查询为什么给出错误的文档版本号?

时间:2019-03-03 17:19:25

标签: solr version document

我正在使用Solr 7.6。在执行搜索查询时,Solr给出了错误的文档 version 字段,但所有其他字段都是正确的。

在Solr仪表板中,查询给出以下结果:

{
        "id":"518fce46-3617-4380-aaf6-8f6d36e08e6a",
        "type":"tag",
        "count":1,
        "_version_":1626999925241806848
}

solr-node搜索功能提供:

{
         "id": "518fce46-3617-4380-aaf6-8f6d36e08e6a",
         "type": "tag",
         "count": 1,
         "_version_": 1626999925241806800
}

1 个答案:

答案 0 :(得分:0)

最初的猜测是,solr-node模块将值作为双精度值(而不是字符串)返回,并且双精度精度不足以精确地表示值1626999925241806848

我们可以直接在浏览器的控制台中确认这一点:

-> 1626999925241806848
<- 1626999925241806800

即如果我们输入数字值1626999925241806848,它将由最接近的浮点数表示,即1626999925241806800

solr-node可能会在这些值超过int的可表示值时以字符串形式返回。

更新:solr-node details this at their overview page

  

使用json-bigint正确处理对于Javascript Number太大的数字,例如* l和_version字段的值。默认情况下,不使用json-bigint库,因为与本地JSON库相比,性能差异对于JSON“大”块(https://github.com/lbdremy/solr-node-client/issues/114#issuecomment-54165595)来说太重要了,但是如果您使用Optimistic Concurreny功能,则要启用它在Solr 4.x中可用,并带有实时获取和原子更新功能,因为它们使用 version 字段。为了启用它,请var client = solr.createClient({ bigint : true})或直接在客户端实例client.options.bigint = true上进行。