Partilhar via


Configurar e gerenciar separadores de palavras e lematizadores para pesquisa (SQL Server)

Aplica-se a:SQL ServerBanco de Dados 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 separadores de palavras e lematizadores fornecidos para todos os idiomas suportados pelo SQL Server, normalmente não é necessário executar nenhuma 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 idiomas suportados pelo SQL Server Full-Text Search, use a seguinte instrução Transact-SQL. 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. Os recursos linguísticos associados aos separadores de palavras registados - lematizadores, palavras irrelevantes (stopwords) e ficheiros de dicionário de sinónimos - também ficam disponíveis para operações de indexação e consulta de texto completo.

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 obter mais informações, consulte Exibir ou alterar filtros registrados e separadores 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 em uma única cláusula de função de consulta de texto completo devem usar o mesmo idioma, a menos que a opção LANGUAGE 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 de texto completo, recomendamos que você especifique um idioma 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 um Idioma ao Criar um Índice Full-Text.

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ções 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, suas configurações de registro 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 possível ataque de saturação de buffer e desliga o processo de daemon de filtro (fdhost.exe), que hospeda os serviços de quebra 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 separador de palavras levou muito tempo para processar a cadeia de caracteres de consulta de texto completo ou um grande número de consultas está em execução 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 obter mais informações, consulte Reverter separadores de palavras usados pela Pesquisa para a versão anterior (Pesquisa do SQL Server).
O separador de palavras funciona mal para uma cadeia de caracteres de consulta específica. Se o separador de palavras for suportado pelo SQL Server, entre em contato com o Suporte e Atendimento ao Cliente Microsoft.
O separador de palavras retorna um excesso de dados para uma string de consulta específica. Se o separador de palavras for suportado pelo SQL Server, entre em contato com o Suporte e Atendimento ao Cliente Microsoft.
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 SQL Server normalmente inclui novos separadores de palavras que têm regras linguísticas melhores e são mais precisos do que os separadores de palavras anteriores. Potencialmente, os novos separadores de palavras podem se comportar de forma diferente dos separadores de palavras em índices de texto completo que foram importados de versões anteriores do SQL Server.

Isso é significativo se um catálogo de texto completo foi importado quando um banco de dados foi atualizado para a versão atual do SQL Server. 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.