Solr将_version_
字段(用于乐观并发(的值作为整数返回。当对返回的文档执行JSON.parse()
时,_version_
数字被取整,因为该数字太大,无法用javascript表示。
如何强制solr将_version_
作为字符串返回?在客户端做一些技巧来避免这个问题也是可能的,但我宁愿一开始就不要用太大的数字来制造问题。我正在使用Solr 8.8。
感谢
更新:我正在使用node进行GET请求。从字符串到json的转换是由json()
函数完成的。
static async documentWithId(id:string){
let url = 'someurlq=id%3A'+id;
let rawResponse = await fetch(url, {
method: 'GET', // or 'PUT',
});
if(rawResponse.status == 200){
let jsonResponse = await rawResponse.json();
if(jsonResponse.response.numFound){
return {document: jsonResponse.response.docs[0]};
}else{
return {document:false};
}
}else{
console.error("SOLR query returned non 200 response");
return {document:"UNKNOWN"};
}
}
Solr用于其正常乐观并发的_version_
字段在如何将更新分发到SolrCloud中的副本(and MUST be assigned internally by Solr
(方面也具有重要的语义。用户不能重新指定该字段的用途并将其指定为在DocBasedVersionConstraintsProcessorFactory配置中使用的versionField。
乐观并发是Solr的一个功能,客户端应用程序可以使用它来更新/替换文档,以确保它们正在替换/更新的文档不会被另一个客户端应用程序同时修改。此功能的工作原理是要求索引中的所有文档都有一个_version_
字段,并将其与作为更新命令一部分指定的_version_
进行比较。默认情况下,Solr的Schema包括一个_version_
字段,该字段会自动添加到每个新文档中。
由于字段是内部定义和使用的,因此无法更改字段的字段类型。
如果需要,您可以自由介绍其他字段。
如果您使用Java作为编程语言,那么您可以将其转换如下。
String strVersion = Long.toString(_version_);