我正在使用solr 7.6。在执行搜索查询时,Solr给出了文档的错误版本字段,但所有其他字段都是正确的。
在solr仪表板中查询给出以下结果:
{
"id":"518fce46-3617-4380-aaf6-8f6d36e08e6a",
"type":"tag",
"count":1,
"_version_":1626999925241806848
}
,而solr节点搜索功能给出:
{
"id": "518fce46-3617-4380-aaf6-8f6d36e08e6a",
"type": "tag",
"count": 1,
"_version_": 1626999925241806800
}
初始猜测是solr节点模块将值返回为double(而不是作为字符串),而双重的精度不足以表示值1626999925241806848
正是。
我们可以在浏览器的控制台中直接确认:
-> 1626999925241806848
<- 1626999925241806800
即。如果我们输入数字值1626999925241806848
,则将由最接近的浮点数表示,即1626999925241806800
。
solr节点超过ints的代表值时,可能应将这些值返回。
update :solr节点详细信息在其概述页面:
使用json-bigint正确处理太大的javascript号码,例如字段 *l和_ version的值。默认情况下,没有使用JSON-BIGINT库,因为与本机JSON库相比,JSON的"大块"(https://github.com/lbdremy/solr-node-client/issues/114#ISSUECOMMENT-54165595),但是如果您使用Solr 4.X中可用的乐观协议功能以及实时获取和原子质更新功能,则要启用它,因为它们使用 version field。为了启用其执行
var client = solr.createClient({ bigint : true})
或直接在客户端实例上client.options.bigint = true
。