Se nenhum dado for encontrado ao chamar a operação Search para índices de pesquisa, os dados podem não ter sido sincronizados corretamente da tabela de dados para o índice de pesquisa, ou o método de consulta utilizado pode ser inadequado. Nesse caso, verifique se a sincronização dos dados da tabela de dados para o índice de pesquisa ocorreu corretamente e se o método de consulta utilizado é apropriado.
Descrição do problema
Ao chamar a operação Search para índices de pesquisa a fim de consultar dados, nenhum dado é encontrado.
Possíveis causas
-
Causa 1: Os dados da tabela de dados foram sincronizados incorretamente para o índice de pesquisa
Caso 1: Os dados da tabela de dados não estão sincronizados com o índice de pesquisa. A sincronização dos dados da tabela de dados para o índice de pesquisa ocorre de forma assíncrona. Portanto, os dados no índice de pesquisa podem não estar atualizados.
Caso 2: Os nomes das colunas no índice de pesquisa diferenciam maiúsculas de minúsculas e podem não corresponder aos nomes das colunas na tabela de dados. Por exemplo, se uma coluna na tabela de dados se chamar ColumnName e a coluna no índice de pesquisa se chamar columnname, haverá uma incompatibilidade com o nome da coluna na tabela de dados.
-
Caso 3: O tipo de dados de uma coluna no índice de pesquisa não corresponde ao tipo de dados da coluna mapeada na tabela de dados. Por exemplo, uma coluna na tabela de dados é do tipo Integer, mas a coluna mapeada no índice de pesquisa é do tipo Keyword.
NotaO modelo Wide column do Tablestore não possui schema. Uma coluna de atributo pode ter diferentes tipos de dados em linhas distintas, o que pode causar falha na sincronização da tabela de dados para o índice de pesquisa em linhas específicas.
-
Caso 4: O tipo de dados de uma coluna no índice de pesquisa não corresponde ao formato de dados da coluna mapeada na tabela de dados. Por exemplo, uma coluna na tabela de dados é do tipo String e tem o valor de
-91,100, mas a coluna mapeada no índice de pesquisa é do tipo Geopoint, Nested ou Vector.NotaO tipo de dados Geopoint no índice de pesquisa está no formato
latitude,longitude. A latitude deve estar no intervalo de -90 a +90, e a longitude deve estar no intervalo de -180 a +180. A latitude deve ser especificada antes da longitude.O tipo de dados Nested no índice de pesquisa está no formato de array JSON. Exemplo:
[{"tagName":"tag1", "score":0.8}, {"tagName":"tag2", "score":0.2}].O tipo de dados Vector no índice de pesquisa está no formato de array Float32. O tamanho do array deve ser igual ao número de dimensões do campo. Por exemplo, o número de dimensões para
[1,5.1,4.7,0.08]é 4.
-
Causa 2: Um método de consulta inadequado foi utilizado
Caso 1: A consulta Match é utilizada para consultar dados em campos do tipo Keyword no índice de pesquisa. Por exemplo, o valor da coluna na tabela de dados é
"abc"e a coluna mapeada no índice de pesquisa é do tipo Keyword. defina a condição de consulta comoMatchQuery("ab")e nenhum dado será encontrado, pois os dados do tipo Keyword não podem ser tokenizados. Não é possível usar a consulta Match para corresponder aos tokens.Caso 2: Os parâmetros estão configurados incorretamente nas condições de consulta. Por exemplo, o valor da coluna na tabela de dados é
"abc"e a coluna mapeada no índice de pesquisa é do tipo Keyword. defina a condição de consulta comoTermQuery("ab")e nenhum dado será encontrado.-
Caso 3: Se a consulta de intervalo for utilizada para consultar uma coluna Keyword no índice de pesquisa, as configurações da condição de consulta serão inválidas. Por exemplo, o valor da coluna na tabela de dados é 20 e a coluna mapeada no índice de pesquisa é do tipo Keyword. defina a condição de consulta como
RangeQuery(>10)e nenhum dado será encontrado.NotaEm uma consulta de intervalo, os dados do tipo Keyword são comparados em ordem alfabética, enquanto os dados dos tipos Long e Double são comparados com base em seus valores numéricos.
Caso 4: O método de tokenização está especificado incorretamente. Por exemplo, o valor da coluna na tabela de dados é
"abcdefg", a coluna mapeada no índice de pesquisa é do tipo Text e o método de tokenização está definido como tokenização de palavra única. defina a condição de consulta comoMatchQuery("abcd")e nenhum dado será encontrado.
Soluções
-
Os dados da tabela de dados não estão sincronizados corretamente com o índice de pesquisa
Certifique-se de que os dados na tabela de dados estejam sincronizados com o índice de pesquisa. Na maioria dos casos, a latência para sincronização incremental de dados é de até 3 segundos. A latência para sincronização total de dados é diretamente proporcional ao volume de dados na tabela de dados.
-
crie um índice de pesquisa e certifique-se de que os mapeamentos de nomes e tipos de dados entre as colunas no índice de pesquisa e as colunas na tabela de dados estejam corretos. Além disso, verifique se os formatos de dados na tabela de dados correspondem aos tipos de dados no índice de pesquisa. Para mais informações, consulte Data types, String types, Date data type e Array and Nested data types.
NotaSe as configurações do índice de pesquisa forem inválidas, crie outro índice de pesquisa ou modifique dinamicamente o schema do índice de pesquisa atual. Para mais informações, consulte crie um índice de pesquisa e modifique dinamicamente o schema do índice de pesquisa.
Ao utilizar o recurso de consulta vetorial k-nearest neighbor (KNN), certifique-se de que os atributos do campo Vector no índice de pesquisa sejam iguais aos atributos do campo Vector gerado pelo sistema de embedding. Os atributos de um campo Vector incluem o número de dimensões, o tipo de dados e o algoritmo de medição de distância. Para mais informações, consulte Vector search.
-
Um método de consulta inadequado foi utilizado
Ao usar um índice de pesquisa para consultar dados, certifique-se de utilizar um método de consulta apropriado e de especificar condições de consulta válidas. Para mais informações, consulte Getting started.
Certifique-se de que o método de tokenização correto esteja especificado. Para mais informações, consulte Tokenization e selecione o método de tokenização correto.