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
Ao criar um índice em texto completo, especifique uma linguagem ao nível da coluna para a coluna indexada. As consultas em texto completo na coluna utilizam o quebrador de palavras e os stemmers da língua especificada. Considere como o Full-Text Engine tokeniza e depois indexa o seu texto quando 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 linguístico na Pesquisa Full-Text
Esta seção fornece uma introdução aos separadores de palavras e lematizadores e discute como Full-Text Pesquisa usa o identificador de código de idioma (LCID) do idioma no nível da coluna.
Introdução aos separadores de palavras e lematizadores
O Mecanismo de Banco de Dados do SQL Server inclui quebradores de palavras e stemmers para muitas línguas, ativados por defeito. O Microsoft Natural Language Group (NLG) implementa e suporta esses componentes linguísticos. Para uma lista de línguas 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 Integral utiliza o nome do idioma ao nível da coluna
Ao criar um índice em texto completo, especifique um nome válido de língua para cada coluna. Se um nome de idioma for válido, mas a vista de catálogo sys.fulltext_languages não o devolver, a Pesquisa de Texto Integral recorre ao nome de idioma disponível mais próximo da mesma família linguística, se existir. Caso contrário, a Pesquisa de Texto Integral recorre ao divisor de palavras Neutral. Para evitar este comportamento de recurso, especifique um nome de língua válido e disponível.
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 char, varchar ou tipo de texto definida para uma configuração de idioma diferente do idioma identificado pelo LCID, o LCID será usado de qualquer maneira durante a indexação de texto completo e a consulta dessas colunas.
Quebra de palavras
Um segmentador de palavras divide em tokens o texto que está a ser indexado com base nos limites entre palavras, que são específicos de cada idioma. Portanto, o comportamento de quebra de palavras difere entre diferentes idiomas. Se você usar um idioma, x, para indexar vários idiomas {x, ye z}, parte do comportamento pode causar resultados inesperados. Por exemplo, um traço (-) ou uma vírgula (,) pode ser um elemento de quebra de palavra que é descartado numa língua mas não noutra. Raramente, pode ocorrer um comportamento inesperado de stemming porque uma dada palavra pode originar de forma diferente em línguas diferentes. Por exemplo, na língua inglesa, os limites das palavras são tipicamente espaços em branco ou alguma forma de pontuação. Noutras línguas, como o alemão, palavras ou caracteres podem ser combinados. Portanto, o idioma de nível de coluna que você escolher deve representar o idioma que você espera armazenar em linhas dessa coluna.
Línguas ocidentais
Para a família ocidental de idiomas, se você não tiver certeza de quais idiomas serão armazenados em uma coluna, ou se espera que mais de um seja armazenado, uma solução geral é usar o separador de palavras para o idioma mais complexo que pode ser armazenado na coluna.
Por exemplo, você pode esperar armazenar conteúdo em inglês, espanhol e alemão em uma única coluna. Estas três línguas ocidentais possuem padrões semelhantes de quebra de palavras, sendo os padrões alemães os mais complexos. Portanto, neste caso, uma boa escolha é usar o quebrador de palavras alemão, que pode processar corretamente textos em inglês e espanhol. Em contraste, o separador de palavras em inglês pode não processar o texto alemão perfeitamente por causa das palavras compostas do alemão.
Usar o separador de palavras da língua mais complexa de uma família linguística não garante a indexação perfeita de todas as línguas da família. Podem existir casos limite em que nem o segmentador de palavras mais avançado consegue processar corretamente texto escrito noutro 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 funciona necessariamente, por razões linguísticas. Para línguas não ocidentais, considere uma das seguintes soluções alternativas:
Para línguas de diferentes famílias
Se uma coluna pode conter idiomas dramaticamente diferentes, por exemplo, espanhol e japonês, considere armazenar o conteúdo de idiomas diferentes em colunas separadas. Esta separação permite usar o separador de palavras específico do idioma para cada coluna. Se você escolher essa solução e não souber a linguagem da consulta no momento da consulta, talvez seja necessário emitir a consulta em ambas as colunas para garantir que a consulta encontre a linha ou o documento correto.
Para conteúdo binário (como documentos do Microsoft Word)
Quando o conteúdo indexado é do tipo binário, o filtro da Pesquisa de Texto Integral que processa o conteúdo textual antes de o enviar para o separador de palavras pode respeitar etiquetas de idioma específicas no ficheiro binário. Nesse caso, no momento da indexação, o filtro emite o LCID correto para um documento ou seção de um documento. Em seguida, o mecanismo de Full-Text chama o separador de palavras para o idioma com esse LCID. No entanto, após indexar conteúdos multilíngues, verifique se o conteúdo foi corretamente indexado.
Para conteúdo de texto sem formatação
Quando o conteúdo é texto sem formatação, você pode convertê-lo para o tipo de dados xml e adicionar marcas de idioma que indicam o idioma correspondente a cada documento ou seção de documento específica. Para que isso funcione, no entanto, você precisa conhecer o idioma antes da indexação de texto completo.
Travessão
Outra consideração ao escolher o idioma ao nível da coluna é o stemming. Stemming em consultas de texto completo é o processo de busca de todas as formas derivadas (flexionais) de uma palavra em um idioma específico. Quando você usa um separador de palavras genérico para processar vários idiomas, o processo de derivação funciona apenas para o idioma especificado para a coluna, não para outros idiomas na coluna. Por exemplo, os algoritmos de stemming em alemão não funcionam para o inglês nem para o espanhol (e por aí fora). Este comportamento pode afetar a sua recordação dependendo da língua que escolher no momento da consulta.
Efeito do tipo de coluna na pesquisa de texto completo
Outra consideração na escolha do idioma está relacionada à forma 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 componente de quebra de palavras tal como está.
Além disso, os separadores de palavras são projetados principalmente para processar texto escrito. Se o seu texto contiver marcação (como HTML), a precisão linguística durante a indexação e pesquisa pode ser reduzida. Nesse caso, tens duas opções: o método preferido é armazenar os dados de texto numa coluna varbinary(max ) e indicar o tipo de documento para que possam ser filtrados. Se essa abordagem não for possível, considera usar o quebra-palavras neutro e, se possível, adicionar dados de marcação (como 'br' em HTML) às tuas listas de palavras de ruído.
Observação
O stemming baseado na linguagem não se aplica quando especifica a linguagem neutra.
Especifique uma linguagem ao nível de coluna não padrão numa consulta de texto completo
Por predefinição, no Motor de Base de Dados, a Pesquisa de Texto Integral analisa os termos da consulta utilizando o idioma especificado para cada coluna na cláusula de texto integral. Para substituir esse comportamento, especifique um idioma não padrão no momento da consulta. Para idiomas suportados cujos recursos estão instalados, a LANGUAGE <language_term> cláusula de uma consulta CONTAINS,CONTAINSTABLE,FREETEXT ouFREETEXTTABLE pode ser usada para especificar o idioma usado para quebra de palavras, derivação, dicionário de sinônimos e processamento de palavras paradas dos termos de consulta.