Além da correspondência de token completa, os índices de pesquisa do Spanner são compatíveis com pesquisas de substring. Esta página descreve como realizar uma pesquisa de substring como parte de uma pesquisa de texto completo no Spanner.
As pesquisas de substring têm as seguintes características:
- Não diferencia maiúsculas de minúsculas, descarta a maioria dos sinais de pontuação e normaliza os espaços em branco.
- Não há segmentação em chinês, japonês e coreano (CJK), já que as consultas parciais em CJK muitas vezes são segmentadas incorretamente.
- Para vários termos de pesquisa, o resultado precisa conter uma substring de cada
termo. Por exemplo,
'happ momen'
corresponde a"happy moment"
, porque ambas as substrings são encontradas no texto. Ele não corresponde a"happy day"
.
Exemplos
Texto armazenado | Consulta de substring | Correspondência |
---|---|---|
Bridge over Troubled Water | ridg roub | Sim |
Bridge over Troubled Water | ridg , roub | Sim |
Bridge over Troubled Water | sobre a ponte | Sim |
Bridge over Troubled Water | ponte | Sim |
Bridge over Troubled Water | Ponte ponte ponte | Sim |
Bridge over Troubled Water | bri trou ter | Sim |
Bridge over Troubled Water | bri dge | Sim |
Bridge over Troubled Water | troubledwater | Não |
Bridge over Troubled Water | trubled | Não |
Para uma pesquisa de substring, use a função TOKENIZE_SUBSTRING
na definição da coluna TOKENLIST
, conforme mostrado no exemplo de DDL a seguir:
CREATE TABLE Albums (
AlbumId STRING(MAX) NOT NULL,
AlbumTitle STRING(MAX),
AlbumTitle_Tokens TOKENLIST AS (TOKENIZE_SUBSTRING(AlbumTitle)) HIDDEN
) PRIMARY KEY(AlbumId);
Na consulta SQL, use a função SEARCH_SUBSTRING
na cláusula WHERE
. Por
exemplo, a consulta a seguir corresponde a um álbum com o título "happy" da tabela
criada no exemplo anterior:
SELECT Album
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');
TOKENIZE_SUBSTRING
gera n-gramas
para cada token e armazena esses n-gramas no índice de pesquisa. O comprimento mínimo e
máximo de n-gramas a serem gerados é configurado por argumentos opcionais.
Os índices de pesquisa de substring podem usar de 10 a 30 vezes mais armazenamento como índices de texto completo sobre
os mesmos dados, porque a tokenização produz muitos mais tokens. Isso é
especialmente verdadeiro se a diferença entre ngram_size_min
e
ngram_size_max
aumentar. As consultas de substring também usam mais recursos para serem executadas.
Assim como o TOKENIZE_FULLTEXT
,
é possível configurar o TOKENIZE_SUBSTRING
para usar tipos específicos de conteúdo.
Ativar uma pesquisa de substring relativa
Além da pesquisa de substring básica,
SEARCH_SUBSTRING
oferece suporte ao modo de pesquisa relativa. Uma pesquisa relativa refina os resultados da pesquisa de
substring.
Para ativar o modo de pesquisa relativa, defina o parâmetro
TOKENIZE_SUBSTRING
relative_search_types
como VERDADEIRO.
Quando a pesquisa relativa está ativada na tokenização, SEARCH_SUBSTRING
pode executar
consultas com os seguintes tipos de pesquisa relativa:
phrase
: corresponde a substrings contíguasExemplos
Texto armazenado Consulta de substring. Correspondência Bridge over Troubled Water ponte Sim Bridge over Troubled Water Ponte ponte ponte Não Bridge over Troubled Water brid over Não Bridge over Troubled Water crista sobre problemas Sim Bridge over Troubled Water ponte sobre problemas Não Bridge over Troubled Water idge ove Sim Bridge over Troubled Water idge , ove Sim Bridge over Troubled Water RIDGE OVE Sim Bridge over Troubled Water água da ponte Não value_prefix
: corresponde a substrings contíguas, e a correspondência precisa começar no início do valor. Isso é conceitualmente semelhante à funçãoSTARTS_WITH
para strings normalizadas de maiúsculas e espaços em branco.Exemplos
Texto armazenado Consulta de substring Correspondência Bridge over Troubled Water ponte Sim Bridge over Troubled Water ponte , over Sim Bridge over Troubled Water crista Não Bridge over Troubled Water água turva Não value_suffix
: corresponde a substrings contíguas e a correspondência precisa ser feita no final do valor. Isso é conceitualmente semelhante à funçãoENDS_WITH
para strings normalizadas de maiúsculas e espaços em branco.Exemplos
Texto armazenado Consulta de substring. Correspondência Bridge over Troubled Water água turva Sim Bridge over Troubled Water água Sim Bridge over Troubled Water água com gás Sim Bridge over Troubled Water água Não Bridge over Troubled Water água com problemas Não Bridge over Troubled Water ponte Não word_prefix:
comovalue_prefix
, mas a string precisa corresponder a um limite de termo, não de valor.Exemplos
Texto armazenado Consulta de substring Correspondência Bridge over Troubled Water sobre problemas Sim Bridge over Troubled Water Over , trouble Sim Bridge over Troubled Water água com problemas Não Bridge over Troubled Water sobre a água Não Bridge over Troubled Water ove Não Bridge over Troubled Water ver problemas Sim word_suffix
: comovalue_suffix
, mas a string precisa corresponder ao final de um limite de termo.Exemplos
Texto armazenado Consulta de substring Correspondência Bridge over Troubled Water ver problemas Sim Bridge over Troubled Water sobre problemas Não Bridge over Troubled Water sobre a água Não Bridge over Troubled Water ove Não
A seguir
- Saiba mais sobre consultas de pesquisa de texto completo.
- Saiba como classificar os resultados da pesquisa.
- Saiba como paginar os resultados da pesquisa.
- Saiba como combinar consultas de texto completo e não de texto.
- Saiba como pesquisar várias colunas.