Além da correspondência total de tokens, os índices de pesquisa do Spanner suportam pesquisas de subcadeias. Esta página descreve como realizar uma pesquisa de subcadeias de carateres como parte de uma pesquisa de texto completo no Spanner.
As pesquisas de subcadeias têm as seguintes características:
- Não é sensível a maiúsculas e minúsculas, ignora a maioria da pontuação e normaliza os espaços em branco.
- Sem segmentação em chinês, japonês e coreano (CJK), uma vez que as consultas CJK parciais são frequentemente segmentadas incorretamente.
- Para vários termos de pesquisa, o resultado tem de conter uma substring de cada termo. Por exemplo,
'happ momen'
corresponde a"happy moment"
, porque ambas as subcadeias de carateres são encontradas no texto. 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 | over brid | Sim |
Bridge over Troubled Water | ponte ate | Sim |
Bridge over Troubled Water | Bridge bridge bridge | 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 seguinte:
GoogleSQL
CREATE TABLE Albums (
AlbumId STRING(MAX) NOT NULL,
AlbumTitle STRING(MAX),
AlbumTitle_Tokens TOKENLIST AS (TOKENIZE_SUBSTRING(AlbumTitle)) HIDDEN
) PRIMARY KEY(AlbumId);
PostgreSQL
Este exemplo usa
spanner.tokenize_substring
.
CREATE TABLE albums (
albumid character varying NOT NULL,
albumtitle character varying,
albumtitle_tokens spanner.tokenlist
GENERATED ALWAYS AS (spanner.tokenize_substring(albumtitle)) VIRTUAL HIDDEN,
PRIMARY KEY(albumid));
Na consulta SQL, use a função SEARCH_SUBSTRING
na cláusula WHERE
. Por exemplo, a seguinte consulta corresponde a um álbum com o título "happy" da tabela criada no exemplo anterior:
GoogleSQL
SELECT Album
FROM Albums
WHERE SEARCH_SUBSTRING(AlbumTitle_Tokens, 'happ');
PostgreSQL
Este exemplo usa
spanner.search_substring
.
SELECT album
FROM albums
WHERE spanner.search_substring(albumtitle_tokens, 'happ');
TOKENIZE_SUBSTRING
gera n-gramas
para cada token e armazena estes n-gramas no índice de pesquisa. O comprimento mínimo e máximo dos n-gramas a gerar são configurados através de argumentos opcionais.
Os índices de pesquisa de subcadeias podem usar 10 a 30 vezes mais armazenamento do que os índices de texto completo nos mesmos dados, porque a tokenização produz muito mais tokens. Isto é
especialmente verdade se a diferença entre ngram_size_min
e
ngram_size_max
aumentar. As consultas de subcadeias também usam mais recursos para execução.
Tal como TOKENIZE_FULLTEXT
, pode configurar o TOKENIZE_SUBSTRING
para usar tipos específicos de conteúdo.
Ative uma pesquisa de subcadeia relativa
Além da pesquisa de subcadeias básica, o SEARCH_SUBSTRING
é compatível com o modo de pesquisa relativa. Uma pesquisa relativa restringe os resultados da pesquisa de subcadeias de carateres.
Para ativar o modo de pesquisa relativa, defina o parâmetro relative_search_types
de
TOKENIZE_SUBSTRING
para uma matriz não vazia com elementos de tipos de pesquisa relativa suportados.
Quando a pesquisa relativa está ativada na tokenização, o SEARCH_SUBSTRING
pode executar consultas com os seguintes tipos de pesquisa relativa:
phrase
: corresponde a subcadeias contíguasExemplos
Texto armazenado Consulta de substring. Correspondência Bridge over Troubled Water passar por cima Sim Bridge over Troubled Water Bridge bridge bridge Não Bridge over Troubled Water brid over Não Bridge over Troubled Water ridge over trouble Sim Bridge over Troubled Water bridge ove troubled 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 ponte de água Não value_prefix
: corresponde a substrings contíguas e a correspondência tem de começar no início do valor. Isto é conceptualmente semelhante à funçãoSTARTS_WITH
para strings normalizadas em termos de capitalização e espaços em branco.Exemplos
Texto armazenado Consulta de substring Correspondência Bridge over Troubled Water passar por cima Sim Bridge over Troubled Water ponte , sobre Sim Bridge over Troubled Water cobre Não Bridge over Troubled Water água agitada Não value_suffix
: corresponde a substrings contíguas e a correspondência tem de ocorrer no final do valor. Isto é conceptualmente semelhante à funçãoENDS_WITH
para strings normalizadas em termos de maiúsculas/minúsculas e espaços em branco.Exemplos
Texto armazenado Consulta de substring. Correspondência Bridge over Troubled Water água agitada Sim Bridge over Troubled Water água ; turva Sim Bridge over Troubled Water água turva Sim Bridge over Troubled Water troubled wate Não Bridge over Troubled Water água turva Não Bridge over Troubled Water passar por cima Não word_prefix:
, comovalue_prefix
, mas a string tem de corresponder a um limite de termo (em vez de um limite de valor).Exemplos
Texto armazenado Consulta de substring Correspondência Bridge over Troubled Water over trouble Sim Bridge over Troubled Water Mais de , problemas Sim Bridge over Troubled Water água turva Não Bridge over Troubled Water sobre a água Não Bridge over Troubled Water ove troubled Não Bridge over Troubled Water ver troubled Sim word_suffix
: comovalue_suffix
, mas a string tem de corresponder no final de um limite de termo.Exemplos
Texto armazenado Consulta de substring Correspondência Bridge over Troubled Water ver troubled Sim Bridge over Troubled Water over trouble Não Bridge over Troubled Water sobre a água Não Bridge over Troubled Water ove troubled Não
O que se segue?
- Saiba mais sobre as consultas de pesquisa de texto integral.
- Saiba como classificar os resultados da pesquisa.
- Saiba como paginar os resultados da pesquisa.
- Saiba como misturar consultas de texto completo e sem texto.
- Saiba como pesquisar várias colunas.