类似于MatchQuery,但是分词后多个词的位置关系会被考虑,只有分词后的多个词在行数据中以同样的顺序和位置存在时,才表示行数据满足查询条件。
前提条件
参数
参数 | 说明 |
---|---|
tableName | 数据表名称。 |
indexName | 多元索引名称。 |
offset | 本次查询的开始位置。 |
limit | 本次查询需要返回的最大数量。
如果只为了获取行数,无需获取具体数据,可以设置limit=0,即不返回任意一行数据。 |
queryType | 设置查询类型为TableStore.QueryType.MATCH_PHRASE_QUERY。 |
fieldName | 要匹配的列。
匹配查询可应用于Text类型。 |
text | 查询关键词,即要匹配的值。
当要匹配的列为Text类型时,查询关键词会被分词成多个词,分词类型为创建多元索引时设置的分词器类型。如果创建多元索引时未设置分词器类型,则默认分词类型为单字分词。 例如查询的值为“this is”,可以匹配到“...,this is tablestore”、“this is a table”,但是无法匹配到“this table is ...”以及“is this a table”。 |
getTotalCount | 是否返回匹配的总行数,默认为false,表示不返回。
返回匹配的总行数会影响查询性能。 |
columnToGet | 是否返回所有列。
|
示例
/**
* 查询表中Col_Text列的值能够匹配"hangzhou shanghai"的数据。
* 匹配条件为短语匹配(要求短语完整的按照顺序匹配),返回匹配到的总行数和一些匹配成功的行。
*/
client.search({
tableName: TABLE_NAME,
indexName: INDEX_NAME,
searchQuery: {
offset: 0,
limit: 10, //如果只为了取行数,但不需要具体数据,可以设置limit=0,即不返回任意一行数据。
query: {//设置查询类型为TableStore.QueryType.MATCH_PHRASE_QUERY。
queryType: TableStore.QueryType.MATCH_PHRASE_QUERY,
query: {
fieldName: "Col_Text", //设置要匹配的列。
text: "hangzhou shanghai" //设置要匹配的值。
}
},
getTotalCount: true //结果中的TotalCount可以表示表中数据的总行数,默认为false,表示不返回。
},
columnToGet: { //返回列设置RETURN_SPECIFIED(自定义)、RETURN_ALL(所有列)和RETURN_NONE(不返回)。
returnType: TableStore.ColumnReturnType.RETURN_ALL
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
在文档使用中是否遇到以下问题
更多建议
匿名提交