全部产品
Search
文档中心

表格存储:使用通配符查询时报错length of field value is longer than 32 for the [WILDCARD_QUERY] query

更新时间:Jun 19, 2025

当使用通配符查询时出现length of field value is longer than 32 for the [WILDCARD_QUERY] query异常时,您可以缩短查询字符串或使用短语匹配查询。

现象

使用通配符查询时出现如下异常:

length of field value is longer than 32 for the [WILDCARD_QUERY] query

原因

带有通配符的字符串长度超出了32字符的限制。

解决方案

缩短查询字符串

缩短待查询的字符串,以确保其长度在32个字符以内。

基于分词的通配符查询

多元索引支持采用基于分词的通配符查询方式,以实现性能更优的模糊查询。在使用基于分词的通配符查询方式时,查询词长度不受限制,但原文内容限制为最多1024字符或者汉字,超过此限制后将自动截断,只保留前1024个字符或者汉字。

  1. 动态修改多元索引schema。

    请根据业务影响评估修改目标列或添加虚拟列,并设置类型为分词字符串(Text)且分词类型为模糊分词(Fuzzy)。具体操作,请参见动态修改schema虚拟列

  2. 使用短语匹配查询(MatchPhraseQuery)。

    具体操作,请参见基于分词的通配符查询

SQL通配符查询场景

使用SQL查询数据时,如果数据表存在多元索引,并且该多元索引包含SQL中涉及的所有数据列,则SQL引擎将自动选择该多元索引进行数据查询。在此情况下,执行SQL通配符查询(如LIKE运算符结合通配符%),也将存在查询词长度限制(最长32个字符)。

您可以通过以下操作解决此问题。

  1. 动态修改多元索引schema。

    请根据业务影响评估修改目标列或添加虚拟列,并设置类型为分词字符串(Text)且分词类型为模糊分词(Fuzzy)。具体操作,请参见动态修改schema虚拟列

  2. 创建多元索引的映射关系

    以下示例用于为数据表example_table的多元索引example_table_index,创建多元索引映射关系example_table__example_table_index

    CREATE TABLE `example_table__example_table_index`(
        `pk` MEDIUMTEXT,
        `attr` MEDIUMTEXT,
        `attr_virtual` MEDIUMTEXT #虚拟列
    )
    ENGINE='searchindex',
    ENGINE_ATTRIBUTE='{"index_name":"example_table_index","table_name":"example_table"}';
  3. 在SQL语句中使用短语匹配查询(TEXT_MATCH_PHRASE)

    以下示例用于查询多元索引映射关系example_table__example_table_index中虚拟列attr_virtual值匹配"tablestore is super cool!"字符串的数据。

    select * from example_table__example_table_index where TEXT_MATCH_PHRASE(attr_virtual, "tablestore is super cool!");