Pesquisar propriedades do documento com listas de propriedades de pesquisa

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

É possível configurar um índice de texto completo para suportar pesquisas com âmbito de propriedade em determinadas propriedades, como Autor e Título, para tipos de documento suportados numa coluna de dados binários varbinary(max) (incluindo FILESTREAM) ou image. Sem esta configuração, as consultas em texto completo realizam pesquisas genéricas em todo o documento, sem distinguir o conteúdo das propriedades do conteúdo do corpo. Esta forma de pesquisa com âmbito de propriedade é conhecida como pesquisa de propriedades.

O filtro associado ao (IFilter) determina se a pesquisa por propriedades é possível em um tipo específico de documento. Para alguns tipos de documento, o IFilter associado extrai algumas ou todas as propriedades definidas para esse tipo de documento, bem como o conteúdo do corpo do documento. Você pode configurar um índice de texto completo para dar suporte à pesquisa de propriedades somente em propriedades extraídas por um IFilter durante a indexação de texto completo. Entre os IFilters que extraem várias propriedades de documentos estão os IFilters para tipos de documentos do Microsoft Office (como .docx, .xlsx, e .pptx). Por outro lado, o IFilter XML não emite propriedades.

Como a pesquisa de texto completo funciona com propriedades de pesquisa

A Pesquisa de Texto Integral suporta pesquisas por propriedade ao atribuir um identificador interno de propriedade a cada propriedade registada e ao armazenar esses identificadores no índice de texto integral.

Identificadores internos de propriedade

O Full-Text Engine atribui arbitrariamente a cada propriedade registrada um ID de propriedade interno, que identifica exclusivamente a propriedade nessa lista de pesquisa específica e que é específica para essa lista de propriedades de pesquisa. Portanto, se uma propriedade for adicionada a várias listas de propriedades de pesquisa, é provável que seu ID de propriedade interno seja diferente entre listas diferentes.

Quando uma propriedade é registada para uma lista de pesquisa, o motor Full-Text atribui arbitrariamente à propriedade um ID de propriedade interno . O ID de propriedade interno é um inteiro que identifica exclusivamente a propriedade nessa lista de propriedades de pesquisa.

A ilustração a seguir mostra uma exibição lógica de uma lista de propriedades de pesquisa que especifica duas propriedades, Title e Keywords. O nome da lista de propriedades para Palavras-chave é Tags. Estas propriedades pertencem ao mesmo conjunto de propriedades, cujo GUID é f29f85e0-4ff9-1068-ab91-08002b27b3d9. Os identificadores inteiros da propriedade são 2 para Title e 5 para Tags (Keywords). O Full-Text Engine mapeia arbitrariamente cada propriedade para um ID de propriedade interno que é exclusivo para a lista de propriedades de pesquisa. O ID da propriedade interna para a propriedade Title é 1 e o ID da propriedade interna para a propriedade Tags é 2.

Captura de ecrã do mapeamento da lista de propriedades de pesquisa para a tabela interna.

É provável que o ID interno da propriedade seja diferente do identificador numérico da propriedade. Se uma determinada propriedade estiver registrada para várias listas de propriedades de pesquisa, um ID de propriedade interno diferente poderá ser atribuído para cada lista de propriedades de pesquisa. Por exemplo, o ID da propriedade interna pode ser 4 em uma lista de propriedades de pesquisa, 1 em outra, 3 em outra e assim por diante. Em contraste, o identificador inteiro da propriedade é intrínseco à propriedade e permanece o mesmo sempre que a propriedade é usada.

Índice de propriedades registadas

Depois que um índice de texto completo é associado a uma lista de propriedades de pesquisa, o índice deve ser preenchido novamente para indexar termos de pesquisa específicos da propriedade. Durante a indexação de texto completo, o conteúdo de todas as propriedades é armazenado no índice de texto completo junto com outro conteúdo. No entanto, ao indexar um termo de pesquisa encontrado em uma propriedade registrada, o indexador de texto completo também armazena o ID de propriedade interno correspondente com o termo. Em contraste, se uma propriedade não estiver registada, é armazenada no índice de texto completo como se fizesse parte do corpo do documento, e tem um valor zero para o ID interno da propriedade.

A ilustração a seguir mostra uma exibição lógica de como os termos de pesquisa aparecem em um índice de texto completo associado à lista de propriedades de pesquisa mostrada na ilustração anterior. Um documento de exemplo, Documento 1, contém três propriedades (Título, Autor e Palavras-Chave), bem como o corpo do documento. Para as propriedades Título e Palavras-chave, que são especificadas na lista de propriedades de pesquisa, os termos de pesquisa são associados às suas IDs internas de propriedade correspondentes no índice de texto completo. Em contraste, o conteúdo da propriedade Author é indexado como se fizesse parte do corpo do documento. Isso significa que registrar uma propriedade aumenta um pouco o tamanho do índice de texto completo, dependendo da quantidade de conteúdo armazenado na propriedade.

Captura de ecrã do índice em texto completo que utiliza uma lista de propriedades de pesquisa.

Os termos de pesquisa na propriedade Título (Favorite, Biking, e Trails) estão associados ao ID interno da propriedade atribuído ao Título para este índice, 1. Os termos de pesquisa na propriedade Palavras-chave (biking e mountain) estão associados ao ID interno da propriedade atribuído às Etiquetas para este índice, 2. Para termos de pesquisa na propriedade Autor (Jane e Doe) e termos de pesquisa no corpo do documento, o ID interno da propriedade é 0. O termo biking ocorre na propriedade Título, na propriedade Palavras-chave (Etiquetas) e no corpo do documento. Uma pesquisa de propriedade por biking na propriedade Título ou na propriedade Palavras-chave (Tags) devolveria este documento como resultado. Uma consulta genérica em texto completo para biking também devolveria este documento, como se o índice não estivesse configurado para pesquisa de propriedades. Uma pesquisa por propriedade de biking na propriedade Autor não devolveria este documento como resultado.

Uma consulta de texto completo com propriedade definida usa as IDs de propriedade internas registadas para a lista de propriedades de pesquisa atual do índice de texto completo.

Impacto de permitir a procura de imóveis

Configurar um índice de texto completo para dar suporte à pesquisa em uma ou mais propriedades aumenta um pouco o tamanho do índice, dependendo do número de propriedades especificadas na lista de propriedades de pesquisa e do conteúdo de cada propriedade.

Ao testar corpos típicos de documentos Microsoft Word, Excel e PowerPoint, foi configurado um índice em texto completo para indexar propriedades típicas de pesquisa. A indexação destas propriedades aumentou o tamanho do índice do texto completo em aproximadamente 5 por cento. Este aumento aproximado de tamanho é provavelmente típico da maioria dos corpus de documentos. No entanto, em última análise, o aumento de tamanho depende da quantidade de dados de propriedade num dado corpus de documentos em relação à quantidade total de dados.

Para permitir a pesquisa de propriedades, crie uma lista de propriedades de pesquisa, adicione uma ou mais propriedades à lista e depois associe a lista a um índice em texto completo.

Criar uma lista de propriedades de pesquisa

Crie uma lista de propriedades de pesquisa usando Transact-SQL ou SQL Server Management Studio.

Crie uma lista de pesquisa de propriedades em Transact-SQL

Use a CREATE SEARCH PROPERTY LIST declaração e dê pelo menos um nome para a lista.

Crie uma lista de propriedades de pesquisa no SQL Server Management Studio

  1. No Pesquisador de Objetos, expanda o servidor.

  2. Expanda Bancos de Dadose, em seguida, expanda o banco de dados no qual você deseja criar a lista de propriedades de pesquisa.

  3. Expanda Armazenamentoe, em seguida, clique com o botão direito do rato em Pesquisar Listas de Propriedades.

  4. Selecione Nova Lista de Propriedades de Pesquisa.

  5. Especifique o nome da lista de propriedades.

  6. Opcionalmente, especifique outra pessoa como proprietária da lista de propriedades.

  7. Selecione uma das seguintes opções:

    • Criar uma lista de propriedades de pesquisa vazia

    • Criar a partir de uma lista de propriedades de pesquisa existente

    Para obter mais informações, veja CREATE SEARCH PROPERTY LIST.

  8. Selecione OK.

Adicionar propriedades a uma lista de propriedades de pesquisa

A pesquisa de propriedades requer a criação de uma lista de propriedades de pesquisa e a especificação de uma ou mais propriedades que você deseja tornar pesquisáveis. Quando você adiciona uma propriedade a uma lista de propriedades de pesquisa, a propriedade é registrada para essa lista específica. Para adicionar uma propriedade a uma lista de propriedades de pesquisa, você precisa dos seguintes valores:

  • GUID do conjunto de propriedades

    Cada propriedade de pesquisa pertence a um único conjunto de propriedades que contém um grupo de propriedades relacionadas. Cada conjunto de propriedades é identificado por um identificador global exclusivo (GUID).

  • Identificador inteiro da propriedade

    Cada propriedade de pesquisa possui um identificador que é exclusivo dentro do conjunto de propriedades. Para uma determinada propriedade, o identificador pode ser um inteiro ou uma cadeia de caracteres, no entanto, a pesquisa de texto completo suporta apenas identificadores inteiros.

  • Nome da propriedade

    Este é o nome que os usuários especificarão em consultas de texto completo para pesquisar na propriedade. Um nome de propriedade pode conter espaços internos. O comprimento máximo é de 256 caracteres.

    O nome da propriedade pode ser qualquer um dos seguintes:

    • O nome canónico do Windows para a propriedade, como System.Author ou System.Contact.HomeAddress.

    • Um nome amigável que é fácil para seus usuários se lembrarem. Algumas propriedades estão associadas a um nome amigável bem conhecido, como "Autor" ou "Endereço residencial", mas você pode especificar o nome mais apropriado para seus usuários.

    Observação

    Uma determinada combinação de GUID do conjunto de propriedades e identificador de propriedade deve ser exclusiva em uma determinada lista de propriedades de pesquisa. Isto significa que não pode adicionar a mesma propriedade mais do que uma vez com nomes ou descrições diferentes.

  • Descrição do imóvel (opcional)

    Ao adicionar uma propriedade de pesquisa a uma lista de propriedades de pesquisa, você pode fornecer uma descrição opcional. Por exemplo, pode querer fornecer informações sobre uma propriedade que não sejam evidentes pelo nome, ou pode querer descrever o conjunto de propriedades da propriedade.

Obter valores para uma lista de propriedades de pesquisa

Consulte Localizar GUIDs de conjuntos de propriedades e IDs inteiros de propriedades para propriedades de pesquisa.

Adicione uma propriedade a uma lista de pesquisa de propriedades em Transact-SQL

Utilize a instrução ALTER SEARCH PROPERTY LIST com os valores que obteve utilizando um dos métodos descritos no artigo Encontrar GUIDs de conjuntos de propriedades e IDs inteiros de propriedades de pesquisa.

O exemplo a seguir demonstra o uso desses valores ao adicionar uma propriedade a uma lista de propriedades de pesquisa:

ALTER SEARCH PROPERTY LIST DocumentTablePropertyList
ADD 'Title' WITH (
    PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9',
    PROPERTY_INT_ID = 2,
    PROPERTY_DESCRIPTION = 'System.Title - Title of the item.'
);

Adicionar uma propriedade a uma lista de propriedades de pesquisa no SQL Server Management Studio

Utilize a caixa de diálogo Pesquisar Propriedades da Lista de Propriedades para adicionar e remover propriedades de pesquisa. Você pode encontrar Listas de Propriedades de Pesquisa no Explorador de Objetos sob o nó de Armazenamento do banco de dados associado.

Associe uma lista de propriedades de pesquisa a um índice de texto completo

Para que um índice de texto completo dê suporte à pesquisa de propriedades nas propriedades registradas para uma lista de propriedades de pesquisa, você precisa associar a lista de propriedades de pesquisa ao índice e preencher novamente o índice. O preenchimento novo do índice de texto completo cria entradas de índice específicas da propriedade para termos de pesquisa em cada uma das propriedades registradas.

Enquanto o índice de texto completo permanecer associado a esta lista de propriedades de pesquisa, uma consulta de texto completo pode usar a opção PROPERTY do predicado CONTAINS para procurar propriedades registadas nessa lista de propriedades de pesquisa.

Se você alterar a lista de propriedades de pesquisa associada a um índice de texto completo, o índice deverá ser reconstruído para colocá-lo em um estado consistente. O índice é truncado imediatamente e fica vazio até que o processo de preenchimento completo seja executado. Para mais informações sobre quando alterar a lista de propriedades de pesquisa causa a reconstrução do índice, veja "Observações", em ALTER FULLTEXT INDEX.

Associe uma lista de propriedades de pesquisa a um índice de texto completo em Transact-SQL

Usa a ALTER FULLTEXT INDEX declaração com a SET SEARCH PROPERTY LIST = <property_list_name> cláusula.

Associe uma lista de propriedades de pesquisa a um índice em texto completo no SQL Server Management Studio

Especifique um valor para Lista de Propriedades de Pesquisa na página Geral da caixa de diálogo Propriedades do ÍndiceFull-Text.

Consultar propriedades de pesquisa com CONTAINS

A sintaxe básica CONTÉM para uma consulta de texto completo com escopo de propriedade é a seguinte:

SELECT column_name
FROM table_name
WHERE CONTAINS (PROPERTY(column_name, 'property_name'), '<contains_search_condition>');

Por exemplo, a consulta a seguir pesquisa em uma propriedade indexada, Title, na coluna Document da tabela Production.Document do banco de dados AdventureWorks. A consulta devolve apenas documentos cuja Title propriedade contém a cadeia Maintenance ou Repair.

USE AdventureWorks2025;
GO

SELECT Document
FROM Production.Document
WHERE CONTAINS (PROPERTY(Document, 'Title'), 'Maintenance OR Repair');
GO

Este exemplo pressupõe que o IFilter do documento extrai sua propriedade Title, que a propriedade Title é adicionada à lista de propriedades de pesquisa e que a lista de propriedades de pesquisa está associada ao índice de texto completo.

Gerir listas de propriedades de pesquisa

Depois de criar uma lista de propriedades de pesquisa, pode vê-la, alterá-la ou eliminá-la.

Ver e alterar uma lista de propriedades de pesquisa

Visualize e altere uma lista de propriedades de pesquisa usando Transact-SQL ou SQL Server Management Studio.

Veja e altere uma lista de propriedades de pesquisa em Transact-SQL

Use a ALTER SEARCH PROPERTY LIST instrução para adicionar ou remover propriedades de pesquisa.

Veja e altere uma lista de propriedades de pesquisa no SQL Server Management Studio

  1. No Pesquisador de Objetos, expanda o servidor.

  2. Expanda Bancos de Dadose, em seguida, expanda a base de dados.

  3. Expanda Storage.

  4. Alargue Listas de Propriedades de Pesquisa para apresentar as listas de propriedades de pesquisa.

  5. Clique com o botão direito do mouse na lista de propriedades e selecione Propriedades.

  6. Na caixa de diálogo Editor de Lista de Propriedades de Pesquisa, use a grade de Propriedades para adicionar ou remover propriedades de pesquisa:

    1. Para eliminar uma propriedade do documento, selecione o cabeçalho de linha à esquerda da propriedade e prima DEL.
  7. Para adicionar uma propriedade de documento, selecione a linha vazia no final da lista, à direita do *, e insira os valores da nova propriedade.

    Para obter informações sobre esses valores, consulte Editor de Lista de Propriedades de Pesquisa. Para mais informações sobre como obter estes valores para propriedades definidas pela Microsoft, consulte Localizar GUIDs de conjuntos de propriedades e IDs inteiros de propriedade para propriedades de pesquisa. Para obter informações sobre propriedades definidas por um fornecedor de software independente (ISV), consulte a documentação desse fornecedor.

  8. Selecione OK.

Eliminar uma lista de propriedades de pesquisa

Não podes eliminar uma lista de propriedades de uma base de dados enquanto a lista está associada a qualquer índice em texto completo.

Apagar uma lista de propriedades de pesquisa em Transact-SQL

Utilize a instrução DROP SEARCH PROPERTY LIST.

Eliminar uma lista de propriedades de pesquisa no SQL Server Management Studio

  1. No Pesquisador de Objetos, expanda o servidor.

  2. Expanda Bancos de Dadose, em seguida, expanda a base de dados.

  3. Expanda Armazenamentoe, em seguida, expanda o nó Listas de Propriedades de Pesquisa.

  4. Clique com o botão direito na lista de propriedades que pretende eliminar e selecione Eliminar.

  5. Selecione OK.