Configurar e gerir word breakers e stemmers

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Os separadores de palavras e lematizadores realizam análise linguística em todos os dados indexados de texto completo. A análise linguística faz as duas coisas seguintes:

  • Identificar limites de palavras (divisão de palavras). O separador de palavras identifica palavras individuais, determinando onde existem limites de palavras com base nas regras lexicais da língua. Cada palavra (também conhecida como token ) é inserida no índice de texto completo usando uma representação compactada para reduzir seu tamanho.

  • Conjugar verbos (stemming). O stemmer gera formas flexionais de uma determinada palavra com base nas regras dessa língua (por exemplo, "correndo", "correu" e "corredor" são várias formas da palavra "correr").

Os separadores de palavras e lematizadores são específicos do idioma

Os segmentadores de palavras e lematizadores são específicos da língua, e as regras para a análise linguística variam entre diferentes idiomas. Os separadores de palavras específicos do idioma tornam os termos resultantes mais precisos para esse idioma.

Para usar os quebradores de palavras e stemmers fornecidos para todas as linguagens suportadas pelo Mecanismo de Banco de Dados do SQL Server, normalmente não é necessário tomar qualquer ação.

  • Quando há um separador de palavras para a família linguística, mas não para a sublíngua específica, a língua principal é usada. Por exemplo, o separador de palavras francês é usado para manipular texto que é francês canadense.

  • Se nenhum separador de palavras estiver disponível para um idioma específico, o separador de palavras neutro será usado. Com o separador de palavras neutro, as palavras são quebradas em caracteres neutros, como espaços e sinais de pontuação.

Obter a lista de idiomas suportados

Para ver a lista de linguagens suportadas pelo Full-Text Search, utilize a seguinte Transact-SQL instrução. A presença de um idioma nesta lista indica que os separadores de palavras estão registados para o idioma.

SELECT *
FROM sys.fulltext_languages;

Obter a lista de separadores de palavras registados

Para que Full-Text Pesquisa use os separadores de palavras para um idioma, eles devem ser registrados. Para quebradores de palavras registados, os recursos linguísticos associados também ficam disponíveis para operações de indexação e consulta de texto completo. Estes recursos incluem stemmers, palavras vazias (stopwords) e ficheiros de tesauros.

Para ver a lista de componentes de separador de palavras registados, use a instrução a seguir.

EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO

Para obter mais informações, consulte sp_help_fulltext_system_components.

Se adicionar ou remover um separador de palavras

Se você adicionar, remover ou alterar um separador de palavras, precisará atualizar a lista de LCIDs (identificadores de localidade) do Microsoft Windows com suporte para indexação e consulta de texto completo. Para mais informações, consulte Personalizar filtros e quebradores de palavras.

Definir a opção de idioma de texto completo padrão

Para uma versão localizada do SQL Server, a Instalação do SQL Server define a opção de idioma de texto completo padrão para o idioma do servidor, se existir uma correspondência apropriada. Para uma versão não localizada do SQL Server, a opção de idioma de texto completo padrão é o inglês.

Ao criar ou alterar um índice de texto completo, você pode especificar um idioma diferente para cada coluna indexada de texto completo. Se nenhum idioma for especificado para uma coluna, o padrão será o valor da opção de configuração idioma de texto completo padrão.

Observação

Todas as colunas listadas numa única cláusula de função de consulta em texto completo devem usar a mesma linguagem, a menos que a LANGUAGE opção seja especificada na consulta. A linguagem utilizada para a coluna indexada de texto completo que está a ser consultada determina a análise linguística realizada sobre os argumentos dos predicados de consulta de texto completo (CONTÉM e TEXTO LIVRE) e funções (CONTAINSTABLE e FREETEXTTABLE).

Escolher o idioma de uma coluna indexada

Ao criar um índice em texto completo, especifique uma linguagem para cada coluna indexada. Se um idioma não for especificado para uma coluna, o idioma padrão do sistema será usado. O idioma de uma coluna determina qual separador de palavras e lematizador são usados para indexar essa coluna. Além disso, o ficheiro de sinónimos dessa língua é utilizado por consultas de texto completo na coluna.

Há algumas coisas a considerar ao escolher o idioma da coluna para criar um índice de texto completo. Essas considerações estão relacionadas a como seu texto é tokenizado e, em seguida, indexado pelo Full-Text Engine. Para mais informações, consulte Escolher uma língua ao criar um índice em texto completo.

Para exibir o idioma do separador de palavras de colunas específicas, execute a instrução a seguir.

SELECT language_id AS 'LCID'
FROM sys.fulltext_index_columns;

Para obter mais informações, consulte sys.fulltext_index_columns.

Resolver erro de tempo de espera na quebra de palavras

Um erro de tempo limite de quebra de palavras pode ocorrer em várias situações. Para obter informações sobre essas situações e como responder em cada situação, consulte MSSQLSERVER_30053.

Informação sobre o erro MSSQLSERVER_30053

Propriedade Valor
Nome do Produto SQL Server
ID do Evento 30053
Origem do evento MSSQLSERVER
Componente SQLEngine
Nome simbólico FTXT_QUERY_E_WORDBREAKINGTIMEOUT (Erro de Timeout na Quebra de Palavras)
Texto da mensagem A quebra de palavras atingiu o tempo limite para a cadeia de caracteres de consulta de texto completo. Isso pode acontecer se o separador de palavras demorou muito tempo para processar a cadeia de caracteres de consulta de texto completo ou se um grande número de consultas estiver em execução no servidor. Tente executar a consulta novamente sob uma carga mais leve.

Explicação

Um erro de tempo limite relacionado à quebra de palavras pode ocorrer nas seguintes situações:

  • O separador de palavras para a linguagem de consulta está configurado incorretamente. Por exemplo, as definições do registo estão incorretas.

  • O separador de palavras funciona mal para uma cadeia de caracteres de consulta específica.

  • O separador de palavras retorna um excesso de dados para uma string de consulta específica. O excesso de dados é tratado como um potencial ataque de ultrapassagem do buffer e encerra o processo do demónio de filtro (fdhost.exe), que acolhe os serviços de segmentação de palavras.

  • A configuração do processo do daemon de filtro está incorreta.

    Os problemas de configuração mais comuns são a expiração de senha ou uma política de domínio que impede que a conta do daemon de filtro faça logon.

  • Uma carga de trabalho de consulta muito pesada está sendo executada na instância do servidor. Por exemplo, o quebrador de palavras demorou muito tempo a processar a cadeia de consulta em texto completo, ou um grande número de consultas está a correr no servidor. Esta é a causa menos provável.

Ação do usuário

Selecione a ação do usuário apropriada para a causa provável do tempo limite, da seguinte maneira:

Causa provável Ação do usuário
O separador de palavras para a linguagem de consulta está configurado incorretamente. Se você estiver usando um separador de palavras de terceiros, ele pode estar registrado incorretamente no sistema operacional. Nesse caso, registre novamente o separador de palavras. Para mais informações, consulte Repor os separadores de palavras utilizados pela Pesquisa de Texto Completo para a versão anterior.
O separador de palavras funciona mal para uma cadeia de caracteres de consulta específica. Se o quebrador de palavras for suportado pelo Database Engine, contacte o Microsoft Customer Service and Support.
O separador de palavras retorna um excesso de dados para uma string de consulta específica. Se o quebrador de palavras for suportado pelo Database Engine, contacte o Microsoft Customer Service and Support.
A configuração do processo do daemon de filtro está incorreta. Certifique-se de que está a utilizar a palavra-passe atual e de que uma política de domínio não está a impedir a conta do daemon de filtro de iniciar sessão.
Uma carga de trabalho de consulta muito pesada está sendo executada na instância do servidor. Tente executar a consulta novamente sob uma carga mais leve.

Compreender o impacto dos separadores de palavras atualizados

Cada versão do Database Engine pode incluir quebradores de palavras atualizados com regras linguísticas revistas. Estes quebradores de palavras atualizados podem comportar-se de forma diferente dos quebradores de palavras em índices de texto completo importados de versões anteriores do Database Engine.

Isto é significativo se um catálogo em texto completo foi importado quando uma base de dados foi atualizada para a versão atual do Database Engine. Um ou mais idiomas usados pelos índices de texto completo no catálogo de texto completo agora podem estar associados a novos separadores de palavras. Para obter mais informações, consulte Atualizar Full-Text Pesquisar.