Partilhar via


Configurar e gerenciar arquivos de dicionário de sinônimos para pesquisa Full-Text

Aplica-se a:SQL Server

As consultas de Pesquisa do SQL Server Full-Text podem pesquisar sinônimos de termos especificados pelo usuário usando um dicionário de sinônimos de Pesquisa Full-Text. Cada tesauro define um conjunto de sinónimos para uma língua específica. Ao desenvolver um dicionário de sinônimos adaptado aos seus dados de texto completo, você pode efetivamente ampliar o escopo de consultas de texto completo nesses dados.

A correspondência de dicionário de sinónimos ocorre para todas as consultas FREETEXT e FREETEXTTABLE e para qualquer consulta CONTAINS e CONTAINSTABLE que especifica a cláusula FORMSOF THESAURUS.

Um dicionário de sinônimos Full-Text Search é um arquivo de texto XML.

O que há num tesauro

Antes que as consultas de pesquisa de texto completo possam procurar sinônimos em um determinado idioma, você precisa definir mapeamentos de dicionário de sinônimos (ou seja, sinônimos) para esse idioma. Cada dicionário de sinônimos deve ser configurado manualmente para definir as seguintes configurações:

  • Conjunto de expansão

    Um conjunto de expansão contém um grupo de sinónimos como "escritor", "autor" e "jornalista" que são substituídos uns pelos outros por uma consulta de texto completo. As consultas que contêm uma correspondência para qualquer sinônimo em um conjunto de expansão são expandidas para incluir todos os outros sinônimos no conjunto de expansão.

    Para obter mais informações, consulte Estrutura XML de um conjunto de expansão mais adiante neste artigo.

  • Conjunto de substituição

    Um conjunto de substituição contém um padrão de texto a ser substituído por um conjunto de substituição. Para obter um exemplo, consulte a seção Estrutura XML de um conjunto de substituição mais adiante neste artigo.

  • Configuração de diacríticos

    Para um dado thesaurus, todos os padrões de pesquisa são sensíveis ou insensíveis a marcas diacríticas, tais como til (~), marca de acento agudo (´), ou trema (¨) (isto é, sensível ao acento ou insensível ao acento). Por exemplo, suponha que você especifique o padrão "café" a ser substituído por outros padrões em uma consulta de texto completo. Se o tesauro não for sensível ao acento, a pesquisa de texto completo substitui os padrões "café" e "cafe". Se o dicionário de sinônimos for sensível ao sotaque, a pesquisa de texto completo substitui apenas o padrão "café". Por padrão, um dicionário de sinônimos não diferencia acentos.

Arquivos de dicionário de sinônimos padrão

O SQL Server fornece um conjunto de arquivos de dicionário de sinônimos XML, um para cada idioma com suporte. Esses arquivos estão essencialmente vazios. Eles contêm apenas a estrutura XML de nível superior que é comum a todos os thesauruses do SQL Server e um dicionário de sinônimos de exemplo comentado.

Localização dos ficheiros do dicionário de sinónimos

O local padrão dos arquivos de dicionário de sinônimos é:

<SQL_Server_data_files_path>\MSSQL13.MSSQLSERVER\MSSQL\FTDATA\

Esse local padrão contém os seguintes arquivos:

  • Fichas de thesaurus específicas do idioma

    O programa de configuração instala ficheiros de dicionário de sinónimos vazios na localização anterior. Um arquivo separado é fornecido para cada idioma suportado. Um administrador de sistema pode personalizar esses arquivos.

    Os nomes de arquivo padrão dos arquivos de dicionário de sinônimos usam o seguinte formato:

    'ts' + <three-letter language-abbreviation> + '.xml'

    O nome do ficheiro de dicionário de sinónimos para uma determinada língua é especificado no registo com o seguinte valor:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>

  • O arquivo global de thesaurus de

    Um arquivo de dicionário de sinônimos global vazio, tsGlobal.xml.

Alterar a localização de um ficheiro de dicionário de sinónimos

Você pode alterar o local e os nomes de um arquivo de dicionário de sinônimos alterando sua chave do Registro. Para cada idioma, a localização do ficheiro de dicionário de sinónimos é especificada no seguinte valor no registo:

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance name>\MSSearch\Language\<language-abbreviation>\TsaurusFile

O arquivo de dicionário de sinônimos global corresponde à linguagem neutra com LCID 0. Este valor só pode ser alterado por administradores.

Como as consultas de texto completo usam o dicionário de sinônimos

Uma consulta de dicionário de sinónimos utiliza um tesauro específico da língua e um dicionário de sinónimos global.

  1. Primeiro, a consulta procura o arquivo específico do idioma e o carrega para processamento (a menos que já esteja carregado). A consulta é expandida para incluir os sinónimos específicos do idioma especificados pelo conjunto de expansão e pelas regras do conjunto de substituição no ficheiro de sinónimos.

  2. Estes passos são então repetidos para o tesauro global. No entanto, se um termo já fizer parte de uma correspondência no ficheiro de dicionário de sinónimos específico da língua, o termo não é elegível para correspondência no dicionário de sinónimos global.

Estrutura de um dossiê de tesauro

Cada arquivo de dicionário de sinônimos define um contêiner XML cuja ID é Microsoft Search Thesaurus, e um comentário, <!-- ... -->, que contém um dicionário de sinônimos de exemplo. O dicionário de sinônimos é definido em um elemento <thesaurus> que contém amostras dos elementos filho que definem a configuração diacrítica, conjuntos de expansão e conjuntos de substituição.

Um arquivo de dicionário de sinônimos vazio típico contém o seguinte texto XML:

<XML ID="Microsoft Search Thesaurus">

<!--  Commented out

    <thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
        <expansion>
            <sub>Internet Explorer</sub>
            <sub>IE</sub>
            <sub>IE5</sub>
        </expansion>
        <replacement>
            <pat>NT5</pat>
            <pat>W2K</pat>
            <sub>Windows 2012</sub>
        </replacement>
        <expansion>
            <sub>run</sub>
            <sub>jog</sub>
        </expansion>
    </thesaurus>
-->
</XML>

Estrutura XML de um conjunto de expansão

Cada conjunto de expansão é incluído dentro de um elemento <expansion>. Dentro desse elemento, você especifica uma ou mais substituições em um elemento <sub>. No conjunto de expansão, você pode especificar um grupo de substituições que são sinônimos umas das outras.

Por exemplo, você pode editar a seção de expansão para tratar as substituições "escritor", "autor" e "jornalista" como sinônimos. As consultas de pesquisa de texto completo que contêm correspondências em uma substituição são expandidas para incluir todas as outras substituições especificadas no conjunto de expansão. Portanto, no exemplo anterior, quando você emite um FORMS OF THESAURUS ou uma consulta FREETEXT para a palavra "autor", a pesquisa de texto completo também retorna resultados de pesquisa contendo as palavras "escritor" e "jornalista".

Esta é como será a seção do conjunto de expansão para o exemplo anterior:

<expansion>
        <sub>writer</sub>
        <sub>author</sub>
        <sub>journalist</sub>
</expansion>

Estrutura XML de um conjunto de substituição

Cada conjunto de substituição é incluído dentro de um elemento <replacement>. Dentro desse elemento, você pode especificar um ou mais padrões em um <pat> elemento e zero ou mais substituições em <sub> elementos, um por sinônimo. Você pode especificar um padrão a ser substituído por um conjunto de substituição. Padrões e substituições podem conter uma palavra ou uma sequência de palavras. Se não houver nenhuma substituição especificada para um padrão, ele terá o efeito de remover o padrão da consulta do usuário.

Por exemplo, suponha que você queira que as consultas para "Win8", o padrão, sejam substituídas por "Windows Server 2012" ou "Windows 8.0", as substituições. Se você executar uma consulta de texto completo para "Win8", a pesquisa de texto completo retornará apenas os resultados da pesquisa contendo "Windows Server 2012" ou "Windows 8.0". Ele não retorna resultados contendo "Win8". Isso ocorre porque o padrão "Win8" é "substituído" pelos padrões "Windows Server 2012" e "Windows 8.0".

Assim seria a secção do conjunto de substituição para o exemplo anterior:

<replacement>
        <pat>Win8</pat>
        <sub>Windows Server 2012</sub>
        <sub>Windows 8.0</sub>
</replacement>

Se você tiver dois conjuntos de substituição com padrões semelhantes sendo combinados, o maior dos dois terá precedência. Por exemplo, se você executar uma consulta FORMS OF THESAURUS para "Comunidade online do Internet Explorer" e tiver os seguintes conjuntos de substituição, o conjunto de substituição "Internet Explorer" terá precedência sobre o conjunto de substituição "Internet". A consulta é, portanto, processada como "comunidade online do IE" ou "comunidade online do IE 9".

<replacement>
         <pat>Internet</pat>
         <sub>intranet</sub>
</replacement>

e ainda

<replacement>
         <pat>Internet Explorer</pat>
         <sub>IE</sub>
         <sub>IE 9</sub>
</replacement>

Estrutura XML da configuração dos diacríticos

A configuração diacrítica de um tesauro é especificada em um único elemento <diacritics_sensitive>. Este elemento contém um valor inteiro que controla a sensibilidade ao acento, da seguinte maneira:

Configuração Diacritics Valor XML
Insensível a sotaques 0 <diacritics_sensitive>0</diacritics_sensitive>
Sensível ao sotaque 1 <diacritics_sensitive>1</diacritics_sensitive>

Observação

Essa configuração só pode ser aplicada uma vez no arquivo e se aplica a todos os padrões de pesquisa no arquivo. Essa configuração não pode ser especificada para padrões individuais.

Editar um dicionário de sinônimos

Você pode configurar o dicionário de sinônimos para um determinado idioma editando seu arquivo de dicionário de sinônimos (um arquivo XML). Durante a instalação, são instalados dicionários de sinónimos vazios que contêm apenas o contêiner <xml> e um elemento de exemplo <thesaurus> comentado. Para que as consultas de pesquisa de texto completo que procuram sinónimos funcionem corretamente, tem de criar um elemento <thesaurus> real que defina um conjunto de sinónimos. Você pode definir duas formas de sinônimos, conjuntos de expansão e conjuntos de substituição.

Editar um ficheiro de dicionário de sinónimos

  1. Abra o arquivo de dicionário de sinônimos no Bloco de Notas ou em outro editor de texto.

  2. Se você estiver editando o arquivo de dicionário de sinônimos pela primeira vez, remova as seguintes linhas de comentário no início e no final do arquivo, respectivamente:

    <!--Commented out
    -->
    
  3. Adicione, modifique ou exclua um conjunto de substituição ou um conjunto de expansão.

  4. Salve o arquivo e feche o Bloco de Notas.

  5. Use sp_fulltext_load_thesaurus_file para carregar o conteúdo do arquivo de dicionário de sinônimos no tempdb, especificando o identificador local (LCID) que corresponde ao idioma do arquivo de dicionário de sinônimos. Por exemplo, para o arquivo de dicionário de sinônimos inglês, tsenu.xml, o LCID correspondente é 1033.

    USE AdventureWorks;
    
    EXECUTE sys.sp_fulltext_load_thesaurus_file 1033;
    GO
    

Recomendações para editar arquivos de dicionário de sinônimos

Recomendamos que as entradas no arquivo de dicionário de sinônimos não contenham caracteres especiais. Isso ocorre porque os separadores de palavras têm comportamentos sutis em relação a caracteres especiais. Se uma entrada de dicionário de sinônimos contiver caracteres especiais, os separadores de palavras usados em combinação com essa entrada podem ter implicações comportamentais sutis para uma consulta de texto completo.

Recomendamos que as entradas <sub> não contenham palavras vazias, pois as palavras vazias são omitidas do índice de texto completo. As consultas são expandidas para incluir as entradas de <sub> de um arquivo de sinônimos, e, se uma entrada <sub> contiver palavras irrelevantes, o tamanho da consulta aumenta desnecessariamente.

Restrições para edição de arquivos de dicionário de sinônimos

As seguintes restrições aplicam-se à edição de um ficheiro de dicionário de sinónimos:

  • Somente os administradores de sistema podem atualizar, modificar ou excluir arquivos de dicionário de sinônimos.

  • Quando você edita arquivos de dicionário de sinônimos usando ferramentas de editor de texto, os arquivos devem ser salvos no formato Unicode e as marcas de ordem de bytes devem ser especificadas.

  • As entradas do dicionário de sinônimos não podem estar vazias ou quebrar palavras em uma cadeia de caracteres vazia.

  • As frases no ficheiro de dicionário de sinónimos não devem ter mais de 512 caracteres.

  • Um tesauro não deve conter entradas duplicadas entre as entradas <sub> dos conjuntos de expansão e os elementos <pat> dos conjuntos de substituição.