如何像搜索字符串一样搜索数字
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")
在我的代码中有这个查询
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")