Além da correspondência completa de tokens, o Spanner pesquisar índices dão suporte a pesquisas de substring. Esta página descreve como realizar uma pesquisa de substring como parte de uma pesquisa de texto completo no Spanner.
Visão geral
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 há consultas CJK parciais costumam segmentar 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 ambos substrings são encontradas no texto. Ele não corresponde a"happy day"
.
Exemplos
Texto armazenado | Consulta de substring | Correspondência |
---|---|---|
Ponte sobre águas turbulentas | Ridg Roub | Sim |
Bridge over Troubled Water | ridg , roub | Sim |
Bridge over Troubled Water | sobre brid | Sim |
Ponte sobre águas turbulentas | ponte | Sim |
Ponte sobre águas turbulentas | Ponte ponte ponte | Sim |
Bridge over Troubled Water | Bri Trou Ter | Sim |
Ponte sobre águas turbulentas | bri dge | Sim |
Bridge over Troubled Water | Água perturbada | Não |
Bridge over Troubled Water | problemas | 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-grams.
para cada token e armazena esses n-gramas no índice de pesquisa. O mínimo e o
tamanho máximo de n-gramas a serem gerados são configurados por argumentos opcionais.
Os índices de pesquisa de substring podem usar de 10 a 30 vezes mais armazenamento que os índices de texto completo
os mesmos dados, porque a tokenização produz muito mais tokens. Isso é
especialmente verdadeiro como a diferença entre ngram_size_min
e
ngram_size_max
cresce. 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
TOKENIZE_SUBSTRING
relative_search_types
como TRUE.
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 Ponte sobre águas turbulentas ponte sobre Sim Ponte sobre águas turbulentas Ponte ponte Não Bridge over Troubled Water brid over Não Bridge over Troubled Water crista sobre problemas Sim Bridge over Troubled Water Bridge Ove perturbado Não Ponte sobre águas turbulentas idge ove Sim Ponte sobre águas turbulentas idge , ove Sim Bridge over Troubled Water RODÉVIA 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 Ponte sobre águas turbulentas ponte sobre Sim Bridge over Troubled Water ponte , sobre Sim Ponte sobre águas turbulentas crista Não Bridge over Troubled Water água turbulenta Não value_suffix
: corresponde a substrings contíguas, e a correspondência precisa corresponder a no final do valor. Conceitualmente, isso é semelhante ao métodoENDS_WITH
para strings normalizadas com letras maiúsculas e minúsculas e espaços.Exemplos
Texto armazenado Consulta de substring. Correspondência Ponte sobre águas turbulentas água turva Sim Ponte sobre águas turbulentas água ; água Sim Bridge over Troubled Water água rublado Sim Bridge over Troubled Water Wate perturbado Não Bridge over Troubled Water Água perturbadora Não Ponte sobre águas turbulentas ponte sobre Não word_prefix:
comovalue_prefix
, mas a string precisa corresponder a um termo (em vez de um limite de valor).Exemplos
Texto armazenado Consulta de substring Correspondência Ponte sobre águas turbulentas acima do problema Sim Bridge over Troubled Water Over , trouble Sim Bridge over Troubled Water água com problemas Não Ponte sobre águas turbulentas sobre a água Não Ponte sobre águas turbulentas CANNOT TRANSLATE 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 Ponte sobre águas turbulentas ver problemas Sim Ponte sobre águas turbulentas sobre problemas Não Ponte sobre águas turbulentas sobre a água Não Ponte sobre águas turbulentas CANNOT TRANSLATE Não
A seguir
- Saiba mais sobre consultas de pesquisa de texto completo.
- Saiba como classificar os resultados da pesquisa.
- Saiba como paginar resultados da pesquisa.
- Saiba como combinar consultas de texto completo e não de texto.
- Saiba como pesquisar várias colunas.