如何在SOLR中以字符串形式返回_version_

c8ib6hqw  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(294)

Solr将_version_字段(用于开放式并发)的值作为整数返回。在返回的文档上执行JSON.parse()时,_version_数字将被舍入,因为该数字太大,无法在JavaScript中表示。
我如何强制solr返回字符串形式的_version_呢?在客户端做一些技巧来避免这个问题也是可能的,但是我不希望一开始就产生一个太大的数字的问题。我使用的是Solr 8.8。
谢谢
UPDATE:我正在使用node发出GET请求。从string到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"};
}

}

oxcyiej7

oxcyiej71#

Solr用于其正常乐观并发的_version_字段在如何将更新分发到SolrCloud中的副本and MUST be assigned internally by Solr方面也具有重要的语义。用户不能重新使用该字段并将其指定为用于DocBasedVersionConstraintsProcessorFactory配置的versionField。
开放式并发是Solr的一项功能,客户端应用程序可以使用该功能更新/替换文档,以确保它们正在替换/更新的文档没有被其他客户端应用程序同时修改。此功能的工作原理是要求索引中所有文档上都有_version_字段,并将其与更新命令中指定的_version_进行比较。默认情况下,Solr的架构包括一个_version_字段,该字段会自动添加到每个新文档中。
由于字段是内部定义和使用的,因此您无法更改字段的字段类型。
如果需要,您可以自由引入其他字段。
如果您使用Java作为编程语言,那么您可以如下转换它。

String strVersion = Long.toString(_version_);

相关问题