Quando a exceção "length of field value is longer than 32 for the [WILDCARD_QUERY] query" ocorre durante uma consulta curinga, você pode encurtar a string de consulta ou usar a consulta de correspondência de frase.
Descrição do problema
A seguinte exceção ocorre ao consultar dados usando a consulta curinga:
length of field value is longer than 32 for the [WILDCARD_QUERY] query
Causa
A string que contém caracteres curinga excede o limite de 32 caracteres.
Soluções
Encurtar a string de consulta
Encurte a string de consulta para garantir que seu comprimento não exceda 32 caracteres.
Consulta curinga baseada em tokenização
O índice de pesquisa oferece suporte à consulta curinga baseada em tokenização para implementar consultas difusas mais eficientes. Ao usar a consulta curinga baseada em tokenização, o comprimento da string de consulta não é limitado. No entanto, o conteúdo original é limitado a um máximo de 1.024 caracteres. O conteúdo que exceder esse limite será automaticamente truncado, e apenas os primeiros 1.024 caracteres serão mantidos.
-
Modificar dinamicamente o esquema do índice de pesquisa.
Com base na avaliação do impacto nos negócios, modifique a coluna de destino ou adicione uma coluna virtual, defina o tipo como Text e defina o método de tokenização como tokenização difusa. Para obter mais informações, consulte Modificar dinamicamente o esquema do índice de pesquisa e Colunas virtuais.
-
Usar a consulta de correspondência de frase (MatchPhraseQuery).
Para obter mais informações, consulte Consulta curinga baseada em token.
Cenário de consulta curinga SQL
Ao usar instruções SQL para consultar dados, se a tabela de dados tiver um índice de pesquisa que inclua todas as colunas de dados envolvidas na instrução SQL, o mecanismo SQL selecionará automaticamente esse índice de pesquisa para consultas de dados. Nesse caso, ao executar consultas curinga SQL (como o operador LIKE combinado com o caractere curinga %), o comprimento da string de consulta também é limitado (máximo de 32 caracteres).
Você pode resolver esse problema por meio das seguintes operações.
-
Modificar dinamicamente o esquema do índice de pesquisa.
Com base na avaliação do impacto nos negócios, modifique a coluna de destino ou adicione uma coluna virtual, defina o tipo como Text e defina o método de tokenização como tokenização difusa. Para obter mais informações, consulte Modificar dinamicamente o esquema do índice de pesquisa e Colunas virtuais.
-
Criar uma tabela de mapeamento para o índice de pesquisa.
O exemplo a seguir cria uma tabela de mapeamento chamada example_table__example_table_index para o índice de pesquisa example_table_index da tabela de dados example_table.
CREATE TABLE `example_table__example_table_index`(
`pk` MEDIUMTEXT,
`attr` MEDIUMTEXT,
`attr_virtual` MEDIUMTEXT #virtual column
)
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name":"example_table_index","table_name":"example_table"}';
-
Usar a consulta de correspondência de frase (TEXT_MATCH_PHRASE) em instruções SQL.
O exemplo a seguir consulta dados na tabela de mapeamento do índice de pesquisa example_table__example_table_index onde o valor da coluna virtual attr_virtual corresponde à string "tablestore is super cool!".
select * from example_table__example_table_index where TEXT_MATCH_PHRASE(attr_virtual, "tablestore is super cool!");