Propriétés du document de table de fichiers SQL Server

9

J'utilise Filetable de SQL Server 2012 pour stocker des documents et les rechercher avec la recherche sémantique .

Je me demandais s'il y avait un moyen de lister toutes les propriétés du document (métadonnées). Il existe un moyen de laisser l'index de recherche en texte intégral et de rechercher dans les propriétés du document. Je peux faire une liste des propriétés des index SQL Server avec l'instruction suivante:

 SELECT * FROM sys.registered_search_properties; 

Je peux également étendre cette liste avec SQL ou en utilisant un programme .

Ce que je n'ai pas trouvé, c'est un moyen de lister les informations réelles. Ce que je recherche, c'est une liste comme:

  • Auteur : Ruud van de Beeten
  • Titre : Document de test
  • propriété personnalisée : valeur personnalisée

Est-ce que quelqu'un peut-il me montrer la bonne direction?

Edit : Bob Beauchemin a créé un ticket décrivant mon problème. Comme le DMV ne répertorie pas les valeurs de propriété, je ne peux pas l'utiliser dans mon projet.

J'ai fini par utiliser C # pour répertorier les propriétés personnalisées avec l' objet OleDocumentProperties . Cet objet peut lire les propriétés d'un document Office. Je continuerai à regarder cette question, en espérant une meilleure solution.

Ruud van de Beeten
la source

Réponses:

10

Il semble (pour le moment) que le mieux que vous puissiez faire est d'utiliser les mots-clés de la propriété, de les joindre au document et de croiser les doigts, cela suffit.

SELECT
    keyword,
    display_term,
    column_id, document_id, property_id
FROM sys.dm_fts_index_keywords_by_property
(
    DB_ID('FileTableDB'), 
    OBJECT_ID('FileTableTb')
);

MSDN sur ce DMV - http://msdn.microsoft.com/en-us/library/ee677646.aspx

Voici une discussion avec Bob Beauchemin et moi sur le sujet: https://twitter.com/bobbeauch/status/275101491084292096

Bob m'a parlé du DMV mentionné ci-dessus et a à peu près confirmé que c'était le moyen le plus probable.

Voici le ticket Connect créé par Bob pour cette rubrique: https://connect.microsoft.com/SQLServer/feedback/details/773212/provide-complete-fts-property-values-in-a-dmv-side-table

Nous discutons également de la façon dont il pourrait être préférable d'avoir un préprocesseur de toutes sortes pour extraire les métadonnées, les stocker (vous ne savez pas si vous normalisez le format de vos documents ou non), puis retraiter s'il est modifié. Bob suggère peut-être de pouvoir retirer cela avec un déclencheur / proc SQLCLR qui serait une solution plutôt intelligente et mettrait la main à la pâte de toutes sortes.

Gator
la source
merci d'avoir pris le temps de répondre à ma question. J'ai découvert le dmv, mais je ne peux pas l'utiliser. Le ticket créé par Bob décrit le mieux mon problème.
Ruud van de Beeten
C'est la meilleure (et la seule) réponse à ce jour. J'ai fini par utiliser C # pour répertorier les propriétés personnalisées avec l' objet OleDocumentProperties . Je vais regarder cette question, en espérant une solution.
Ruud van de Beeten
5

J'ai trouvé la version bêta d'un produit qui fait cela car on m'a posé la question directement. Pas affilié à cette société est en aucune façon. Voir «Comment renvoyer des valeurs de propriété de document dans la recherche de texte intégral» sur: http://www.sqlskills.com/blogs/bobb/ .

Bob Beauchemin
la source