我正在使用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
}
答案 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
上进行。