Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
É uma função usada na cláusula FROM de uma instrução Transact-SQL SELECT para realizar uma pesquisa em texto completo do SQL Server em colunas indexadas em texto completo contendo tipos de dados baseados em caracteres. Esta função devolve uma tabela de zero, uma ou mais linhas para as colunas que contêm valores que correspondem ao significado e não apenas à redação exata do texto na freetext_string especificada. O FREETEXTTABLE é referenciado como se fosse um nome de tabela normal.
O FREETEXTTABLE é útil para os mesmos tipos de correspondências do FREETEXT (Transact-SQL),
Consultas que usam FREETEXTTABLE retornam um valor de classificação de relevância (RANK) e uma chave de texto completo (KEY) para cada linha.
Observação
Para obter informações sobre as formas de pesquisas de texto completo suportadas pelo SQL Server, consulte Consulta com Full-Textde Pesquisa .
Transact-SQL convenções de sintaxe
Sintaxe
FREETEXTTABLE (table , { column_name | (column_list) | * }
, 'freetext_string'
[ , LANGUAGE language_term ]
[ , top_n_by_rank ] )
Arguments
table
É o nome da tabela que foi marcada para consulta em texto completo.
Table ou Viewpode ser um nome de objeto de base de dados composto por uma, duas ou três partes. Ao consultar uma vista, apenas uma tabela base indexada em texto completo pode ser envolvida.
A tabela não pode especificar um nome de servidor e não pode ser usada em consultas contra servidores ligados.
column_name
É o nome de uma ou mais colunas indexadas de texto completo da tabela especificada na cláusula FROM. As colunas podem ser do tipo char, varchar, nchar, nvarchar, texto, ntext, image, xml, varbinary, ou varbinary(max).
column_list
Indica que várias colunas, separadas por uma vírgula, podem ser especificadas.
column_list deve ser colocado entre parênteses. A menos que language_term seja especificado, o idioma de todas as colunas de column_list deve ser o mesmo.
*
Especifica que todas as colunas que foram registradas para pesquisa de texto completo devem ser usadas para pesquisar o freetext_stringfornecido. A menos que language_term seja especificado, a linguagem de todas as colunas indexadas em texto completo na tabela deve ser a mesma.
freetext_string
É texto para procurar no column_name. Qualquer texto, incluindo palavras, frases ou frases, pode ser inserido. As correspondências são geradas se qualquer termo ou as formas de qualquer termo forem encontradas no índice de texto completo.
Ao contrário da condição de pesquisa CONTAINS, onde AND é uma palavra-chave, quando usada em freetext_string a palavra 'and' é considerada uma palavra de ruído, ou palavra stopword, e será descartada.
Não é permitido o uso de WEIGHT, FORMSOF, curingas, NEAR e outras sintaxes. freetext_string é quebrado de palavras, estancado e passado através do tesauro.
LÍNGUA language_term
É a linguagem cujos recursos serão usados para quebra de palavras, derivação e dicionário de sinônimos e remoção de palavras paradas como parte da consulta. Esse parâmetro é opcional e pode ser especificado como uma cadeia de caracteres, inteiro ou valor hexadecimal correspondente ao identificador de localidade (LCID) de um idioma. Se language_term for especificado, o idioma que ele representa será aplicado a todos os elementos da condição de pesquisa. Se nenhum valor for especificado, o idioma de texto completo da coluna será usado.
Se documentos de idiomas diferentes forem armazenados juntos como objetos binários grandes (BLOBs) em uma única coluna, o identificador de localidade (LCID) de um determinado documento determinará qual idioma será usado para indexar seu conteúdo. Ao consultar tal coluna, especificar LANGUAGE language_term pode aumentar a probabilidade de uma boa correspondência.
Quando especificada como uma cadeia, language_term corresponde ao valor da coluna alias na vista de compatibilidade sys.syslanguages (Transact-SQL). A cadeia de caracteres deve ser colocada entre aspas simples, como em 'language_term'. Quando especificado como um inteiro, language_term é o LCID real que identifica o idioma. Quando especificado como um valor hexadecimal, language_term é 0x seguido pelo valor hexadecimal do LCID. O valor hexadecimal não deve exceder oito dígitos, incluindo zeros à esquerda.
Se o valor estiver no formato DBCS (conjunto de caracteres de byte duplo), o Microsoft SQL Server o converterá em Unicode.
Se a linguagem especificada não for válida ou não houver recursos instalados que correspondam a essa linguagem, o SQL Server devolve um erro. Para usar os recursos de linguagem neutra, especifique 0x0 como language_term.
top_n_by_rank
Especifica que apenas as npartidas de classificação mais alta, por ordem decrescente, são devolvidas. Aplica-se somente quando um valor inteiro, n, é especificado. Se top_n_by_rank for combinado com outros parâmetros, a consulta poderá retornar menos linhas do que o número de linhas que realmente correspondem a todos os predicados.
top_n_by_rank permite aumentar o desempenho da consulta lembrando apenas os acertos mais relevantes.
Observações
Predicados e funções de texto completo funcionam em uma única tabela, o que está implícito no predicado FROM. Para pesquisar em várias tabelas, use uma tabela unida na cláusula FROM para pesquisar um conjunto de resultados que seja o produto de duas ou mais tabelas.
O FREETEXTTABLE utiliza as mesmas condições de pesquisa do predicado FREETEXT.
Tal como o CONTAINSTABLE, a tabela devolvida tem colunas chamadas KEY e RANK, que são referenciadas dentro da consulta para obter as linhas apropriadas e usar os valores de classificação das linhas.
Permissions
O FREETEXTTABLE só pode ser invocado por utilizadores com privilégios SELECT apropriados para a tabela especificada ou para as colunas referenciadas da tabela.
Examples
A. Exemplo simples
O exemplo seguinte cria e preenche uma tabela simples de duas colunas, listando 3 condados e as cores nas suas bandeiras. Depois, cria e preenche um catálogo de texto completo e um índice na tabela. Depois, é demonstrada a sintaxe FREETEXTTABLE .
CREATE TABLE Flags (Country nvarchar(30) NOT NULL, FlagColors varchar(200));
CREATE UNIQUE CLUSTERED INDEX FlagKey ON Flags(Country);
INSERT Flags VALUES ('France', 'Blue and White and Red');
INSERT Flags VALUES ('Italy', 'Green and White and Red');
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');
SELECT * FROM Flags;
GO
CREATE FULLTEXT CATALOG TestFTCat;
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;
GO
SELECT * FROM Flags;
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Blue');
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Yellow');
B. Usar FREETEXT numa INNER JOIN
O exemplo seguinte devolve a descrição e a classificação de quaisquer produtos com uma descrição que corresponda ao significado de high level of performance.
USE AdventureWorks2022;
GO
SELECT FT_TBL.Description
,KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL
INNER JOIN FREETEXTTABLE(Production.ProductDescription,
Description,
'high level of performance') AS KEY_TBL
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
ORDER BY RANK DESC;
GO
C. Especificação da Língua e das Partidas Mais Bem Classificadas
O exemplo seguinte é idêntico e mostra a utilização dos LANGUAGE parâmetros language_term e top_n_by_rank.
USE AdventureWorks2022;
GO
SELECT FT_TBL.Description
,KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL
INNER JOIN FREETEXTTABLE(Production.ProductDescription,
Description,
'high level of performance',
LANGUAGE N'English', 2) AS KEY_TBL
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
ORDER BY RANK DESC;
GO
Observação
O parâmetro LANGUAGE language_term não é necessário para usar o parâmetro top_n_by_rank .
Ver também
Introdução ao Full-Text Pesquisa
Criar e gerenciar catálogos Full-Text
CRIAR CATÁLOGO DE TEXTO COMPLETO (Transact-SQL)
CRIAR ÍNDICE DE TEXTO COMPLETO (Transact-SQL)
Criar e gerenciar Full-Text índices
Consulta com Full-Text Pesquisa
Criar consultas de pesquisa Full-Text (Visual Database Tools)
CONTÉM (Transact-SQL)
CONTIDA (Transact-SQL)
TEXTO LIVRE (Transact-SQL)
Funções de Conjunto de Linhas (Transact-SQL)
SELECIONAR (Transact-SQL)
ONDE (Transact-SQL)
Precompute rank Opção de Configuração do Servidor
Compare funcionalidades no Azure SQL Database e Azure SQL Managed Instance