本文主要为您介绍匹配查询的相关接口。

MatchAllQuery

MatchAllQuery用于匹配所有行,常用于查询表中数据总行数,或者查看表中任意几条数据。

/**
 * 通过MatchAllQuery查询表中数据的总行数
 */
client.search({
    tableName: TABLE_NAME,
    indexName: INDEX_NAME,
    searchQuery: {
        offset: 0,
        limit: 10, //如果只为了取行数,但不需要具体数据,可以设置limit=0,即不返回任意一行数据。
        query: {
            queryType: TableStore.QueryType.MATCH_ALL_QUERY
        },
        getTotalCount: true // 结果中的TotalCount可以表示表中数据的总行数, 默认false不返回
    },
    columnToGet: { //返回列设置:RETURN_SPECIFIED(自定义),RETURN_ALL(所有列),RETURN_NONE(不返回)
        returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
        returnNames: ["Col_1", "Col_2", "Col_3"]
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});

MatchQuery

MatchQuery采用近似匹配的方式查询表中的数据。例如查询的值为“this is”, 可以匹配到“...,this is tablestore”、“is this tablestore”、“tablestore is cool”、“this”、“is”等。




/**
 * 查询表中Col_Keyword这一列的值能够匹配"hangzhou"的数据,返回匹配到的总行数和一些匹配成功的行。
 */
client.search({
    tableName: TABLE_NAME,
    indexName: INDEX_NAME,
    searchQuery: {
        offset: 0,
        limit: 10, //如果只为了取行数,但不需要具体数据,可以设置limit=0,即不返回任意一行数据。
        query: { // 设置查询类型为MatchQuery
            queryType: TableStore.QueryType.MATCH_QUERY,
            query: {
                fieldName: "Col_Keyword",
                text: "hangzhou" // 设置要匹配的值
            }
        },
        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));
});

MatchPhraseQuery

使用MatchPhraseQuery进行短语匹配查询。短语匹配查询与匹配查询类似,但是要求查询的短语必须完整的按照顺序匹配。例如查询的值为“this is”,可以匹配到“...,this is tablestore”、“this is a table”,但是无法匹配到“this table is ...”以及“is this a table”。




/**
 * 查询表中Col_Text这一列的值能够匹配"hangzhou shanghai"的数据,
 * 匹配条件为短语匹配(要求短语完整的按照顺序匹配),返回匹配到的总行数和一些匹配成功的行。
 */
client.search({
    tableName: TABLE_NAME,
    indexName: INDEX_NAME,
    searchQuery: {
        offset: 0,
        limit: 10, //如果只为了取行数,但不需要具体数据,可以设置limit=0,即不返回任意一行数据。
        query: {// 设置查询类型为MatchPhraseQuery
            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));
});