Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

SharePoint-Suche: Integration von File Shares aufgepeppt (Teil 3 - Custom Entity Extraction)

Dieser Beitrag ist die direkte Fortsetzung von SharePoint-Suche: Integration von File Shares auf­ge­peppt (2) und zeigt eine Lösung für fol­gen­des Problem auf:

Der Haupt-Ordner, unter dem sich eine Datei befin­det (und der die ein­zel­nen Dokumente klas­si­fi­ziert), ist, wenn über­haupt, nur über die Pfadangabe (Url) im Ergebnis sicht­bar. Eine Filterung des Suchergebnisses nach den ein­zel­nen Kategorien (Hauptordnern) ist nicht möglich.

Fileshare

Als Technik wer­den benut­zer­de­fi­nier­ten Entitätsextraktionsfunktionen (Custom Entity Extraction) eingesetzt.

Konfiguration eines Refiners nach Kategorie (Hauptordner)

Hier wird es nun kniff­lig. Was genau wol­len wir eigent­lich errei­chen? Es soll ein Refiner erstellt wer­den, der zu jedem Dokument oder Ordner den Ordner auf der obers­ten Ebene des File Shares ("Hauptordner") zurück­gibt, unab­hän­gig davon, ob sich das Dokument direkt in die­sem Ordner oder in einem Unterordner belie­bi­ger Tiefe befin­det. (Da ein klas­si­scher Anwendungsfall für die­ses Szenario jener ist, in dem der Hauptordner die Dokumente klas­si­fi­ziert, bezeichne ich dies auch als "Kategorie".)

Zuerst müs­sen wir wie­der her­aus­fin­den, wel­che Managed Property dafür in Frage kommt. Genau genom­men gibt es sogar meh­rere, wir wol­len uns auf "Path" konzentrieren:

Codeplex Search Query Tool

Nun ent­hält Path aber den kom­plet­ten Pfad mit allen Ordnern und incl. Dateiname – ist also in die­ser Form als Refiner unge­g­eig­net. Hier kommt nun Custom Entity Extraction ins Spiel: SharePoint stellt ins­ge­samt 12 vor­de­fi­nierte Refiner zur Verfügung, die für 4 ver­schie­dene Typen von Entitätsextraktionsfunktionen (Wort, Wortteil, genaues Wort, genauer Wortteil) anhand eines Dictionaries Werte einer Managed Property auf einen Dictionary-Wert mappt (Details s. oben ver­link­ten TechNet-Artikel). Dabei kön­nen meh­rere Werte der Managed Property auf den glei­chen Dictionary-Wert gemappt werden.

SharePoint-Suche: Vordefinierte Refiner für Custom Entity Extraction

Folgende Schritte sind dafür durchzuführen:

  1. Custom Entity Dictionary erstel­len und für einen der 12 Custom Refiner bereitstellen
  2. Passende Managed Property kon­fi­gu­rie­ren, so dass sie den ent­spre­chen­den Custom Refiner befüllt
  3. Custom Refiner im Webpart konfigurieren

Custom Entity Dictionary erstellen und bereitstellen

Da außer den Hauptordnern belie­big viele Unterordner exis­tie­ren kön­nen und die Managed Property "Path" auch den Dateinamen mit ent­hält, habe ich eine "WordPart"-Extraktion gewählt. Mein Dictionary heißt "PathDictionary4.csv", liegt im File Share (das ist purer Zufall – da hatte ich bloß schon eine Netzwerkfreigabe, und der Import erwar­tet einen UNC-Pfad) und sieht wie folgt aus:

Key,Display form
file://com1924915/Fileshare for Search/Case Studies/,Case Studies
file://com1924915/Fileshare for Search/SharePoint Tutorials,SharePoint Tutorials
file://com1924915/Fileshare for Search/Technische Diagramme für SharePoint 2013,Technische Diagramme für SharePoint 2013
file://com1924915/Fileshare for Search/Unterhaltsames,Unterhaltsames

Achtung, Stolpergefahr! Das Dictionary sollte als UTF‑8 gespei­chert wer­den, da ansons­ten zum Beispiel Umlaute nicht kor­rekt gemappt werden.

Mit fol­gen­dem Powershell-Snippet wird das Dictionary für einen Custom Refiner bereit­ge­stellt (bei mir WordPart.4, weil die ande­ren schon für andere Versuche in Verwendung waren):

Import-SPEnterpriseSearchCustomExtractionDictionary ‑SearchApplication $searchApp ‑Filename "\\com1924915\Fileshare for Search\PathDictionary4.csv" ‑DictionaryName Microsoft.UserDictionaries.EntityExtraction.Custom.WordPart.4

SharePoint-Suche:Bereitstellung des Dictionaries für Custom Entity Extraction

In der SharePoint Management Shell sollte eine Erfolgsmeldung wie im Screenshot zu sehen aus­ge­ge­ben werden.

Passende Managed Property für den Custom Refiner konfigurieren

Hier wird es nun ganz mys­te­riös. Eigentlich sollte die "pas­sende" Managed Property ja "Path" sein, aber damit habe ich es abso­lut nicht zum Funktionieren bekom­men, eben­so­we­nig mit "OriginalPath" oder "DisplayPath". Keinerlei Fehlermeldung, weder auf der Oberfläche noch im SharePoint ULS – der Refiner ent­hält ein­fach keine Werte 😕 .

Nachdem ich der Verzweiflung schon nahe war, brachte der Blogbeitrag Entity extrac­tion in SharePoint based on the path mana­ged pro­perty… von von Mikael Svenson dann Licht ins Dunkel: Warum es mit Path & Co. nicht funk­tio­niert, wird wohl das Geheimnis von Microsoft blei­ben, aber fol­gen­der Trick funktioniert: 

  1. Neue Managed Property erstel­len (die Eigenschaften Queryable, Refinable etc. sind uner­heb­lich – brau­chen also nicht akti­viert wer­den, sofern die Managed Property nicht noch für andere Zwecke ver­wen­det wer­den soll)
  2. Exakt die­sel­ben Crawled Properties wie von "Path" auf die neue Managed Propery mappen 
    • Achtung, Stolpergefahr! Es gibt meh­rere Crawled Properties mit den glei­chen Bezeichnungen ("Basic11" etc.), ent­we­der man mappt kur­zer­hand alle oder ver­ge­wis­sert sich anhand der Property Set ID, dass man die rich­tige "erwischt" hat.
  3. Diese Managed Property anstelle von "Path" für den Custom Refiner verwenden

Bei mir heißt die neue Managed Property "CustomPath":

SharePoint-Suche: Suchschema für die verschiedenen Managed Properties bzgl. Path

Nun muss nur noch die Managed Property "CustomPath" für die Verwendung der Word Part Custom Extraction kon­fi­gu­riert werden:

SharePoint-Suche: Konfiguration des Refiners "CustomPath" für Custom Entity Extraction

Zum Abschluss den­ken wir natür­lich daran, dass ein Full Crawl erfor­der­lich ist! 😀

Custom Refiner im Webpart konfigurieren

Das ist nun nur noch Handwerksarbeit:

SharePoint-Suche: Konfiguration des Refiners

Ergebnis anschauen und freuen 🙂

SharePoint-Suche: FileShare-Integration und Verwendung eines Refiners mittels Custom Entity Extraction

Sie wol­len gleich mit der Integration von File Shares anfangen?

>> Hier gelan­gen Sie zu den SharePoint-Lizenzen <<

Related Posts

Pin It on Pinterest