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
Você pode criar um índice de texto completo em colunas XML que indexa o conteúdo dos valores XML, mas ignora a marcação XML. As tags de elemento são usadas como limites de token. São indexados os seguintes itens:
O conteúdo dos elementos XML.
O conteúdo dos atributos XML do elemento de nível superior apenas, a menos que esses valores sejam numéricos.
Quando possível, você pode combinar a pesquisa de texto completo com o índice XML da seguinte maneira:
Primeiro, filtre os valores XML de interesse usando a pesquisa de texto completo SQL.
Em seguida, consulte os valores XML que usam o índice XML na coluna XML.
Exemplo: combinar pesquisa de texto completo com consulta XML
Depois que o índice de texto completo tiver sido criado na coluna XML, a consulta a seguir verifica se um valor XML contém a palavra "personalizado" no título de um livro:
SELECT *
FROM T
WHERE CONTAINS(xCol,'custom')
AND xCol.exist('/book/title/text()[contains(.,"custom")]') = 1;
O método contains() usa o índice de texto completo para subdefinir os valores XML que contêm a palavra "personalizado" em qualquer lugar do documento. A cláusula exist() garante que a palavra "costume" ocorra no título de um livro.
Uma pesquisa de texto completo que usa contains() e XQuery contains() tem semânticas diferentes. A última é uma correspondência de substring e a primeira é uma correspondência de token que usa derivação. Portanto, se a pesquisa for pela string que tem "run" no título, as correspondências incluirão "run", "runs" e "running", porque tanto o texto completo contains() quanto o XQuery contains() estão satisfeitos. No entanto, a consulta não corresponde à palavra "personalizável" no título, pois o contains() de texto completo falha, mas o XQuery contains() é satisfeito. Geralmente, para correspondência de substring pura, a cláusula de texto completo contains() deve ser removida.
Além disso, a pesquisa de texto completo usa derivação de palavras, mas XQuery contains() é uma correspondência literal. Esta diferença é ilustrada no exemplo seguinte.
Exemplo: Pesquisa de texto completo em valores XML usando derivação
A verificação XQuery contains() que foi executada no exemplo anterior geralmente não pode ser eliminada. Considere esta consulta:
SELECT *
FROM T
WHERE CONTAINS(xCol,'run');
A palavra "ran" no documento corresponde à condição de pesquisa devido à derivação. Além disso, o contexto de pesquisa não é verificado usando XQuery.
Quando o XML é decomposto em colunas relacionais usando AXSD que são indexadas em texto completo, as consultas XPath que ocorrem na exibição XML não executam pesquisa de texto completo nas tabelas subjacentes.