赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 开发参考
  5. SDK参考
  6. PHP SDK
  7. 多元索引
  8. 数据查询
  9. 全文检索
  10. 匹配查询

匹配查询

  • 全文检索
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

MatchQuery采用近似匹配的方式查询表中的数据。表格存储会先对Text类型的列值和查询关键词按照设置好的分词器做切分,然后按照切分好后的词去查询。对于使用模糊分词的Text类型的列,建议使用MatchPhraseQuery实现高性能的模糊查询。

前提条件

  • 已初始化OTSClient。具体操作,请参见初始化OTSClient。
  • 已创建数据表并写入数据。
  • 已在数据表上创建多元索引。具体操作,请参见创建多元索引。

参数

参数

说明

table_name

数据表名称。

index_name

多元索引名称。

offset

本次查询的开始位置。

limit

本次查询需要返回的最大数量。

如果只为了获取行数,无需获取具体数据,可以设置limit=0,即不返回任意一行数据。

get_total_count

是否返回匹配的总行数,默认为false,表示不返回。

返回匹配的总行数会影响查询性能。

query_type

设置查询类型为QueryTypeConst::MATCH_QUERY。

field_name

要匹配的列。

匹配查询可应用于Text类型。

text

查询关键词,即要匹配的值。

当要匹配的列为Text类型时,查询关键词会被分词成多个词,分词类型为创建多元索引时设置的分词器类型。如果创建多元索引时未设置分词器类型,则默认分词类型为单字分词。

例如当要匹配的列为Text类型时,分词类型为单字分词,则查询词为"this is",可以匹配到“...,this is tablestore”、“is this tablestore”、“tablestore is cool”、“this"、“is”等。

operator

逻辑运算符。默认为OR,表示当分词后的多个词只要有部分匹配时,则行数据满足查询条件。

如果设置operator为AND,则只有分词后的所有词都在列值中时,才表示行数据满足查询条件。

minimum_should_match

最小匹配个数。

只有当某一行数据的field_name列的值中至少包括最小匹配个数的词时,才会返回该行数据。

说明

minimum_should_match需要与逻辑运算符OR配合使用。

columns_to_get

是否返回所有列,包含return_type和return_names设置。

  • 当设置return_type为ColumnReturnTypeConst::RETURN_SPECIFIED时,可以通过return_names指定返回的列。
  • 当设置return_type为ColumnReturnTypeConst::RETURN_ALL时,表示返回所有列。
  • 当设置return_type为ColumnReturnTypeConst::RETURN_ALL_FROM_INDEX时,表示返回多元索引中的所有列。
  • 当设置return_type为ColumnReturnTypeConst::RETURN_NONE时,表示不返回所有列,只返回主键列。

示例

以下示例用于查询表中text列的值能够匹配"ots text php keyword"的数据。

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 2,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::MATCH_QUERY,
            'query' => array(
                'field_name' => 'text',
                'text' => 'ots text php keyword',
//              'operator' => QueryOperatorConst::PBAND,
                'operator' => QueryOperatorConst::PBOR,//minimum_should_match与OR配合使用。
                'minimum_should_match' => 3
            )
        ),
        'sort' => array(
            array(
                'field_sort' => array(
                    'field_name' => 'keyword',
                    'order' => SortOrderConst::SORT_ORDER_ASC
                )
            ),
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('text')
    )
);
$response = $otsClient->search($request);

常见问题

  • 使用多元索引Search接口查不到数据

  • 如何将多元索引Search接口查询数据的limit提高到1000

  • 为什么使用多元索引翻页查询时Token失效了?

相关文档

  • 多元索引查询类型包括精确查询、多词精确查询、全匹配查询、匹配查询、短语匹配查询、前缀查询、范围查询、通配符查询、多条件组合查询、地理位置查询、嵌套类型查询和列存在性查询,您可以选择合适的查询类型进行多维度数据查询。

    如果要对结果集进行排序或者翻页,您可以使用排序和翻页功能来实现。具体操作,请参见排序和翻页。

    如果要按照某一列对结果集做折叠,使对应类型的数据在结果展示中只出现一次,您可以使用折叠(去重)功能来实现。具体操作,请参见折叠(去重)。

  • 如果要进行数据分析,例如求最值、求和、统计行数等,您可以使用Search接口的统计聚合功能或者SQL查询来实现。具体操作,请参见统计聚合和SQL查询。

  • 如果要快速导出数据,而不关心整个结果集的顺序时,您可以使用ParallelScan接口和ComputeSplits接口实现多并发导出数据。具体操作,请参见并发导出数据。

相关文章

匹配查询 2025-04-22 14:20

MatchQuery采用近似匹配的方式查询表中的数据。表格存储会先对Text类型的列值和查询关键词按照设置好的分词器做切分,然后按照切分好后的词去查询。对于使用模糊分词的Text类型的列,建议使用MatchPhraseQuery实现高性能的模糊查询。

短语匹配查询 2025-04-22 14:20

短语匹配查询(MatchPhraseQuery)类似于匹配查询(MatchQuery),但是分词后多个词的位置关系会被考虑,只有分词后的多个词在行数据中以同样的顺序和位置存在时,才表示行数据满足查询条件。如果查询列的分词类型为模糊分词,则使用MatchPhraseQuery可以实现比Wildcard

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号