Verwandtschaftssuche – Funktionen zur statistisch semantische Suche

Im vorhergehenden Artikel Statistisch semantische Suche haben wir das notwendige Werkzeug für den SQL Server eingebunden: Die Semantik Datenbank und den Microsoft Office Paketfilter.

Nun soll die Semantik auch mal für uns tun. Mit Hilfe 3er Funktionen können wir einiges herausfinden:

Funktion 1: SEMANTICKEYPHRASETABLE

SEMANTICKEYPHRASETABLE hilft uns dabei die Schlüsselwörter aus Dokumenten herauszufinden.

Der Funktionsrumpf sieht dabei so aus:

SEMANTICKEYPHRASETABLE ( table, { column | (column_list) | * } [ , source_key ] ) So zum Beispiel DECLARE @DocID hierarchyid SELECT @DocID = path_locator from Akten where name = Workflow.docx; SELECT SEMANTIKTAB.keyphrase, SEMANTIKTAB.score from SEMANTICKEYPHRASETABLE ( Akten, file_stream, @DocID ) AS SEMANTIKTAB ORDER BY SEMANTIKTAB.score DESC;

Und hier mein Ergebnis dazu:

So finden wir schon mal raus, welche Schlüsselwörter ein Dokument enthält und in welcher Gewichtung. So könne wir schon mal rausfinden welche Dokumente ähnlich sind.

Funktion 2: SEMANTICSIMILARITYTABLE

Die Funktion gibt als Ergebnis die Dokumente zurück, die aufgrund der Semantik dem angegeben ähneln, sprich sich in den Schlüsselwörtern inkl Gewichtung ähnlich sind.

SEMANTICSIMILARITYTABLE ( table, { column | (column_list) | * }, source_key ) Zunächst suchen wir uns die Idee des Dokuments raus.. DECLARE @DocID hierarchyid SELECT @DocID = path_locator from Akten where name = Workflow.docx; SELECT mft.name, sst.score FROM SEMANTICSIMILARITYTABLE ( Akten, file_stream, @DocID ) AS sst INNER JOIN Akten mft ON path_locator = matched_document_key ORDER BY score DESC

Und so sieht mein Ergebnis hier aus..

Je höher der Score, umso ähnlicher das Dokument.

Ach ja.. Wenn zwei oder mehr Dokumente den gleichen Score aufweisen, kann man davon ausgehen, dass es sich um Kopien handelt

 

Funktion 3: SEMANTICSIMILARITYDETAILSTABLE

Warum ist dieses Dokument eigtl ähnlich mit einem anderen. Die Funktion SEMANTICSIMILARITYDETAILSTABLE schlüsselt uns das etwas genauer aus:

SEMANTICSIMILARITYDETAILSTABLE ( table, source_column, source_key, matched_column, matched_key ) DECLARE @DocID hierarchyid DECLARE @DocIDVergleich hierarchyid SELECT @DocID = path_locator from Akten where name = Workflow.docx; SELECT @DocIDVergleich = path_locator FROM Akten WHERE name = Security.docx; SELECT TOP(5) TAB.keyphrase, TAB.score FROM SEMANTICSIMILARITYDETAILSTABLE ( Akten, file_stream, @DocID, file_stream, @DocIDVergleich ) AS TAB ORDER BY TAB.score DESC;

 

Voila.. und das ist unser Ergebnis. vermutlich hatte alles was mit Sharepoint zu tun

Die Semantik belastet natürlich unseren Volltext ein Stück mehr, aber die Möglichkeiten, die sich daraus ergeben sind unerschöpfllich, vor allem, wenn man bendekt wie extrem schnel ldie Volltextindizierung geworden ist.

Fumus

Share
Published by
Fumus

Recent Posts

SQL Server 2019 – static data masking – Du Opfer!

In SQL Server 2016 wurde das sog. dynamic data masking eingeführt. Eine Möglichkeit Daten bei…

5 Jahren ago

MinRole – Oder wie alles etwas einfacher wird

Seit Sharepoint Server 2007 präsentiert sich die Installation immer auf die gleiche Weise. Gerade mal,…

8 Jahren ago

Schritt für Schritt: SQL 2016 – Dynamic Data Masking

Es weihnachtet! Gerade bekam ich von einer Kollegin Plätzchen angeboten mit der Größe eines Diskus…

8 Jahren ago

Schritt für Schritt: SQL Server 2016 – temporal tables

Nein, bitte nicht verwechseln: temporal tables haben nichts zu tun mit temporary tables table variables…

9 Jahren ago

SQL Server 2016 Schritt für Schritt–Installation und First Look

SQL Server 2016.. habe ich schon erwähnt, dass ich den ziemlich cool finde? Wollen wir…

9 Jahren ago

SQL Server 2016 – CTP2

Nach langer Zeit wieder mal eine Artikel von mir.. der mich besonders erfreut. SQL Server…

9 Jahren ago