Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Ao criar um índice em texto completo, especifique uma linguagem em nível de coluna para a coluna indexada. Consultas de texto completo na coluna usam o separador de palavras e os lematizadores do idioma especificado. Considere como o Full-Text Engine tokeniza e depois indexa seu texto quando você escolhe a linguagem das colunas.
Observação
Para especificar um idioma de nível de coluna para uma coluna de índice de texto completo, use a LANGUAGE <language_term> cláusula ao especificar a coluna. Para obter mais informações, consulte CREATE FULLTEXT INDEX e ALTER FULLTEXT INDEX.
Suporte à linguagem na Pesquisa Full-Text
Esta seção apresenta uma introdução aos separadores de palavras e lematizadores e discute como a pesquisa de texto completo usa o identificador de código de idioma (LCID) do idioma no nível de coluna.
Introdução aos separadores de palavras e lematizadores
O Mecanismo de Banco de Dados do SQL Server inclui separadores de palavras e lematizadores para muitos idiomas, ativados por padrão. O NLG (Microsoft Natural Language Group) implementa e dá suporte a esses componentes linguísticos. Para uma lista de linguagens suportadas, veja sys.fulltext_languages.
Componentes externos, como quebradores de palavras e filtros, devem ser assinados para melhorar a segurança. Para verificar a assinatura, execute a seguinte declaração:
EXECUTE sp_fulltext_service 'verify_signature';
Como a pesquisa de texto completo usa o nome do idioma no nível de coluna
Ao criar um índice em texto completo, especifique um nome válido de idioma para cada coluna. Se um nome de idioma for válido, mas a visualização de catálogo sys.fulltext_languages não o retornar, Full-Text Busca retorna ao nome de idioma disponível mais próximo da mesma família de idiomas, se houver. Caso contrário, a Pesquisa de Texto Completo recorre ao quebrador de palavras neutro. Para evitar esse comportamento de recurso, especifique um nome válido e disponível para o idioma.
Observação
O LCID é usado em todos os tipos de dados qualificados para indexação de texto completo (como char ou nchar). Se você tiver a ordem de classificação de uma coluna de tipo char, varcharou text definida com uma configuração de idioma diferente do idioma identificado pelo LCID, o LCID será usado de qualquer forma durante a indexação de texto completo e a consulta dessas colunas.
Quebra de palavras
Um segmentador de palavras tokeniza o texto que está sendo indexado com base nos limites entre palavras, que variam conforme o idioma. Por isso, o comportamento da separação de palavras é diferente entre diferentes idiomas. Se você usar um idioma, xpara indexar vários idiomas {xe yz}, parte do comportamento poderá causar resultados inesperados. Por exemplo, um traço (-) ou uma vírgula (,) pode ser um elemento de quebra de palavra que é descartado em um idioma, mas não em outro. Raramente, pode ocorrer um comportamento de lematização inesperado porque uma dada palavra pode ter um comportamento de lematização diferente em outros idiomas. Por exemplo, no idioma inglês, os limites de palavras normalmente são espaços em branco ou alguma forma de pontuação. Em outros idiomas, como o alemão, palavras ou caracteres podem ser combinados. Portanto, o idioma de nível de coluna escolhido deve representar o idioma que você espera armazenar em linhas dessa coluna.
Idiomas ocidentais
Para a família ocidental de idiomas, se você não tiver certeza de quais idiomas serão armazenados em uma coluna ou esperar que mais de um seja armazenado, uma solução alternativa geral será usar o separador de palavras para a linguagem mais complexa que pode ser armazenada na coluna.
Por exemplo, você pode esperar armazenar conteúdo em inglês, espanhol e alemão em uma única coluna. Essas três línguas ocidentais possuem padrões semelhantes de quebra de palavras, com os padrões alemães sendo os mais complexos. Portanto, nesse caso, uma boa escolha é usar o quebrador de palavras alemão, que pode processar textos em inglês e espanhol corretamente. Por outro lado, o separador de palavras do inglês pode não processar textos em alemão perfeitamente por causa das palavras compostas do idioma.
Usar o separador de palavras da linguagem mais complexa em uma família de idiomas não garante a indexação perfeita de cada idioma da família. Pode haver situações específicas nas quais o separador de palavras mais complexo não pode lidar corretamente com textos escritos em outro idioma.
Línguas não ocidentais
Para línguas não ocidentais (como chinês, japonês, hindi e assim por diante), a solução alternativa anterior não necessariamente funciona, por razões linguísticas. Para línguas não ocidentais, considere uma das seguintes soluções alternativas:
Para idiomas de famílias diferentes
Se uma coluna tiver de conter idiomas drasticamente diferentes, como espanhol e japonês, considere armazenar o conteúdo de idiomas diferentes em colunas separadas. Essa separação permite que você use o quebrador de palavras específico do idioma para cada coluna. Se você escolher essa solução e não souber qual é a linguagem da consulta no momento da consulta, talvez precise executar a consulta em ambas as colunas para garantir que a consulta encontre a linha ou o documento corretos.
Para conteúdo binário (como documentos do Microsoft Word)
Quando o conteúdo indexado é do tipo binário, o filtro de Pesquisa de Texto Completo que processa o conteúdo textual antes de enviá-lo para o separador de palavras pode respeitar tags específicas de idioma dentro do arquivo binário. Nesse caso, no momento da indexação, o filtro emite o LCID certo para um documento ou seção de um documento. O Mecanismo de Texto Completo chama o separador de palavras para o idioma com esse LCID. No entanto, após indexar o conteúdo multilíngue, verifique se o conteúdo foi corretamente indexado.
Para conteúdo em texto sem-formatação
Quando o conteúdo for um texto sem formatação, você poderá convertê-lo para o tipo de dados xml e adicionar marcas de idioma que indicam o idioma correspondente para cada documento ou seção de documento. No entanto, para que isso funcione, você deve saber qual é o idioma antes de executar a indexação de texto completo.
Lematização
Outro aspecto que você deve levar em consideração quando escolher o idioma no nível de coluna é a lematização. Em consultas de texto completo,lematização é o processo de procurar todas as formas lematizadas (flexivas) de uma palavra em determinado idioma. Quando você usa um separador de palavras genérico para processar vários idiomas, o processo de lematização só funcionará para o idioma especificado para a coluna, e não para os outros idiomas da coluna. Por exemplo, os lematizados de alemão não funcionam para inglês ou espanhol (e assim por diante). Esse comportamento pode afetar sua recordação dependendo do idioma escolhido no momento da consulta.
Efeito do tipo de coluna na pesquisa de texto completo
Outro aspecto a ser considerado na escolha do idioma está relacionada a como os dados são representados. Para dados que não são armazenados em uma coluna varbinary(max ), nenhuma filtragem especial é executada. Em vez disso, o texto geralmente é passado pelo separador de palavras assim como é.
Além disso, os separadores de palavra foram criados principalmente para processar texto escrito. Se seu texto contiver marcação (como HTML), a precisão linguística durante a indexação e a busca pode ser reduzida. Nesse caso, você tem duas opções: o método preferido é armazenar os dados de texto em uma coluna varbinary(max ) e indicar o tipo de documento para que possa ser filtrado. Se essa abordagem não for uma opção, considere a possibilidade de usar o separador de palavras neutro e, se possível, adicionar dados de marcação (como "br" em HTML) à lista de palavras de ruído.
Observação
O stemming baseado na linguagem não se aplica quando você especifica a linguagem neutra.
Especifique uma linguagem não padrão em nível de coluna em uma consulta de texto completo
Por padrão, no Mecanismo de Banco de Dados, Full-Text Busca analisa os termos de consulta usando a linguagem especificada para cada coluna na cláusula de texto completo. Para ignorar esse comportamento, especifique um idioma não padrão no momento da consulta. Para os idiomas com suporte cujos recursos estão instalados, a cláusula LANGUAGE <language_term> de uma consulta CONTAINS, CONTAINSTABLE, FREETEXT ou FREETEXTTABLE pode ser usada para especificar o idioma utilizado para separação de palavras, lematização, dicionário de sinônimos e processamento de palavra irrelevante (stop word) dos termos da consulta.
Conteúdo relacionado
- CONTÉM (Transact-SQL)
- CONTAINSTABLE (Transact-SQL)
- Tipos de dados (Transact-SQL)
- TEXTO LIVRE (Transact-SQL)
- FREETEXTTABLE (Transact-SQL)
- Configurar e gerenciar filtros
- sys.sp_fulltext_service (Transact-SQL)
- sys.fulltext_languages (Transact-SQL)
- Configurar e gerenciar separadores de palavras e stemmers