后缀查询(SuffixQuery)是通过指定后缀条件查询索引中的数据,例如通过手机尾号后4位查询快递。
功能概述
后缀查询主要用于查找以特定后缀结尾的数据。使用SuffixQuery功能查询数据时,您需要指定后缀值。
当前支持用于SuffixQuery的数据类型只有FuzzyKeyword。FuzzyKeyword是专门为SuffixQuery、PrefixQuery和WildcardQuery等模糊查询功能优化过的数据类型,在小、中、大规模数据上的查询性能均会更好更稳定,且性能基本不会随着数据规模增长而下降。
FuzzyKeyword类型的字段不支持排序和统计聚合。如果FuzzyKeyword类型的字段同时需要进行排序或统计聚合,可以通过虚拟列为Keyword类型实现。
如果希望在Keyword类型上实现后缀查询效果,您可以在写入数据时将数据翻转,然后使用前缀查询(PrefixQuery)功能进行数据查询。
接口
后缀查询的接口为Search或者ParallelScan,具体的Query类型为SuffixQuery。
参数说明
查询请求
request 的类型为 SearchRequest,包含以下参数。
|
名称 |
类型 |
说明 |
|
tableName(必选) |
String |
数据表名称。 |
|
indexName(必选) |
String |
多元索引名称。 |
|
searchQuery(必选) |
SearchQuery |
查询条件和通用查询配置。 |
|
columnsToGet(可选) |
SearchRequest.ColumnsToGet |
返回列配置。未设置时只返回主键列。 |
|
timeoutInMillisecond(可选) |
int |
请求级查询超时时间,单位为毫秒。默认值为 |
|
routingValues(可选) |
|
自定义路由字段对应的主键值列表。未配置自定义路由时无需设置。 |
查询配置
request.searchQuery 的类型为 SearchQuery,包含以下参数。
|
名称 |
类型 |
说明 |
|
query(必选) |
Query |
查询条件。后缀查询设置为 |
|
offset(可选) |
Integer |
本次查询的起始位置。 |
|
limit(可选) |
Integer |
本次查询返回的最大行数。设置为 |
|
collapse(可选) |
Collapse |
结果折叠配置,用于按指定列对返回结果去重。有关配置方法,请参见折叠(去重)。 |
|
sort(可选) |
Sort |
返回结果的排序方式。 |
|
trackTotalCount(可选) |
int |
期望统计的最大匹配行数。默认值为 |
|
filter(可选) |
SearchFilter |
对 |
|
aggregationList(可选) |
|
统计聚合配置。 |
|
groupByList(可选) |
|
分组配置。 |
|
token(可选) |
byte[] |
翻页凭证。将上一次响应的 |
查询条件
request.searchQuery.query 的类型为 SuffixQuery,包含以下参数。
|
名称 |
类型 |
说明 |
|
fieldName(必选) |
String |
要查询的 |
|
suffix(必选) |
String |
查询字符串。完整字段值必须以该字符串结尾,且匹配区分大小写。 |
|
weight(可选) |
float |
查询条件的相关性权重,必须为正浮点数。值越大,该查询条件对 BM25 相关性评分的贡献越高。该参数不影响匹配结果和返回行数,仅在使用 |
返回列
request.columnsToGet 的类型为 SearchRequest.ColumnsToGet,包含以下参数。
|
名称 |
类型 |
说明 |
|
columns(可选) |
|
要返回的属性列名称。仅 |
|
returnAll(可选) |
boolean |
是否返回数据表中的全部属性列。默认值为 |
|
returnAllFromIndex(可选) |
boolean |
是否返回已建立索引的全部属性列。默认值为 |
使用方式
您可以使用控制台或者SDK进行后缀查询。进行后缀查询之前,您需要完成如下准备工作。
已创建RAM用户并为RAM用户授权表格存储操作权限。具体操作,请参见使用RAM用户访问密钥访问表格存储。
已创建数据表。具体操作,请参见数据表操作。
已为数据表创建多元索引。具体操作,请参见创建多元索引。
计费说明
使用 VCU 模式(原预留模式)时,使用多元索引查询数据会消耗 VCU 的计算资源。使用 CU 模式(原按量模式)时,使用多元索引查询数据会消耗读吞吐量。更多信息,请参见多元索引计量计费。