Estou tentando determinar se posso recuperar um valor de propriedade (atributo) de um blob xml armazenado em uma coluna habilitada para FILESTREAM usando a pesquisa de texto completo. Aqui está um exemplo onde message é um varbinary(max)
campo que armazena mensagens xml:
SELECT message FROM AuditTable
WHERE CONTAINS ( PROPERTY ( message, 'AccountNo' ), '123456');
Na página MSDN Pesquisar propriedades de documentos com listas de propriedades de pesquisa , o resumo na parte superior da página inclui esta declaração: "Por outro lado, o XML IFilter não emite propriedades."
Estou confuso porque parece que isso deve funcionar para um documento XML. Estou começando a preparar um ambiente para testar, mas queria perguntar primeiro caso alguém já saiba.
Se você tiver, digamos, um documento do Word ou do Excel, eles terão propriedades conhecidas do documento , como Autor, Título, Palavras-chave, etc., que você pode associar a uma lista de propriedades de pesquisa e, em seguida, a um índice de texto completo. Propriedades disponíveis dependendo de seu IFilter. Você pode usar a palavra-chave PROPERTY para consultar essas propriedades.
No entanto, com um arquivo .xml, é improvável que o documento tenha essas propriedades personalizadas e o que você realmente deseja fazer é pesquisar o conteúdo xml. AccountNo soa como apenas um atributo no xml em vez de uma propriedade de documento. Você pode pesquisar seu xml usando métodos comuns de pesquisa de texto completo; no entanto, a marcação xml e os nomes de atributos são ignorados em índices de texto completo. Você pode consultar o atributo e o conteúdo do elemento. Você também pode converter o conteúdo do arquivo para xml e usar os métodos xml integrados, por exemplo, .query, .nodes, .value e .exist. Trabalhe com esta demonstração e veja se faz sentido:
Também fiz um teste e não consegui um documento xml para emitir nenhuma propriedade, conforme sugerido pela documentação. No entanto, eu poderia fazer isso funcionar com um documento padrão do Word.