如何像搜索字符串一样搜索数字

How to search on numbers in the same way like searching on strings

在我的代码中有这个查询

cts.elementWordQuery(["name"], "ca*", ["wildcarded])

我想在或她的字段上进行类似的查询,但字段类型是数字。

tldr 想要方法:

cts.elementWordQuery(["number-field"], "909*", ["wildcarded])

return 数字字段 属性 等于 9091、9091231 等的文档

我假设这是一个 JSON 文档,它是一个数字 属性?

您可以创建一个 field range index 作为字符串,然后:

使用 cts.fieldValueMatch() 和通配符查找以 909 开头的值,将这些字符串转换为 Number,然后使用 cts.fieldValueQuery() 查找这些数字:

const values = [];
for (const str of cts.fieldValueMatch('number-field', "909*")) { 
  values.push(Number(str)) 
}
cts.search(cts.fieldValueQuery('number-field', values))

或者用cts.fieldValueMatch()909*开头的值作为cts.fieldRangeQuery():

中相等的取值标准
cts.search(cts.fieldRangeQuery('number-field', '=', cts.fieldValueMatch('number-field', '909*')));

或使用cts.fieldRangeQuery(可能还需要添加<约束):

cts.fieldRangeQuery('number-field', ">", "909")