Eigenschaften des SQL Server Filetable-Dokuments

9

Ich verwende die Dateitabelle von SQL Server 2012 , um Dokumente zu speichern und sie mit der semantischen Suche zu durchsuchen .

Ich habe mich gefragt, ob es eine Möglichkeit gibt, alle Dokumenteigenschaften (Metadaten) aufzulisten. Es gibt eine Möglichkeit, die Volltextsuche zu indizieren und Dokumenteigenschaften zu durchsuchen. Ich kann eine Liste der Eigenschaften von SQL Server-Indizes mit der folgenden Anweisung erstellen:

 SELECT * FROM sys.registered_search_properties; 

Ich kann diese Liste auch mit SQL oder mit einem Programm erweitern .

Was ich nicht gefunden habe, ist eine Möglichkeit, die tatsächlichen Informationen aufzulisten. Was ich suche, ist eine Liste wie:

  • Verfasser : Ruud van de Beeten
  • Titel : Testdokument
  • benutzerdefinierte Eigenschaft : benutzerdefinierter Wert

Kann mich jemand in die richtige Richtung weisen?

Bearbeiten : Bob Beauchemin hat ein Ticket erstellt , das mein Problem beschreibt. Da die DMV die Eigenschaftswerte nicht auflistet, kann ich sie in meinem Projekt nicht verwenden.

Am Ende habe ich C # verwendet, um benutzerdefinierte Eigenschaften mit dem OleDocumentProperties- Objekt aufzulisten . Dieses Objekt kann Eigenschaften aus einem Office-Dokument lesen. Ich werde diese Frage weiter beobachten und auf eine bessere Lösung hoffen.

Ruud van de Beeten
quelle

Antworten:

10

Es sieht so aus, als ob (zu diesem Zeitpunkt) das Beste, was Sie tun können, darin besteht, die Schlüsselwörter in der Eigenschaft zu verwenden, sie mit dem Dokument zu verbinden und die Daumen zu drücken, es reicht aus.

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 auf dieser DMV - http://msdn.microsoft.com/en-us/library/ee677646.aspx

Hier ist eine Diskussion mit Bob Beauchemin und mir zum Thema: https://twitter.com/bobbeauch/status/275101491084292096

Bob erzählte mir von der oben erwähnten DMV und bestätigte ziemlich genau, dass dies der wahrscheinlichste Weg ist.

Hier ist das Connect-Ticket, das Bob für dieses Thema erstellt hat: https://connect.microsoft.com/SQLServer/feedback/details/773212/provide-complete-fts-property-values-in-a-dmv-side-table

Wir werden auch darüber sprechen, wie es besser sein könnte, eine Art Präprozessor zu haben, um die Metainformationen abzurufen, zu speichern (nicht sicher, ob Sie das Format Ihrer Dokumente normalisieren oder nicht) und dann erneut zu verarbeiten, wenn sie geändert werden. Bob schlägt vor, dies vielleicht mit einem SQLCLR-Trigger / Proc durchzuziehen, was eine ziemlich clevere Lösung wäre und Ihre Hände schmutzig machen würde.

Alligator
quelle
Vielen Dank, dass Sie sich die Zeit genommen haben, meine Frage zu beantworten. Ich habe von der dmv erfahren, kann sie aber nicht verwenden. Das Ticket, das Bob erstellt hat, beschreibt am besten, was mein Problem ist.
Ruud van de Beeten
Dies ist die bisher beste (und einzige) Antwort. Am Ende habe ich C # verwendet, um benutzerdefinierte Eigenschaften mit dem OleDocumentProperties- Objekt aufzulisten . Ich werde mir diese Frage ansehen und auf eine Lösung hoffen.
Ruud van de Beeten
5

Beta eines Produkts gefunden, das dies tut, weil mir die Frage direkt gestellt wurde. Nicht mit dieser Firma verbunden ist in keiner Weise. Siehe "Zurückgeben von Dokumenteigenschaftswerten in der Volltextsuche" unter: http://www.sqlskills.com/blogs/bobb/ .

Bob Beauchemin
quelle