Auf der Suche nach Dokumenten aus dem aktuellen Web

Ihr möchtet im SharePoint auf einer Seite Dokumente suchbasiert auf Basis von Tags darstellen?
Ist doch keine Herausforderung, man nehme die SharePoint eigenen Such-WebParts!

War und ist auch meine favorisierte Vorgehensweise, ist ja alles SharePoint Standard, einfach konfigurierbar und schnell hübsch zu bekommen.

Doch in einem Projekt kam die Frage auf, wie ich ein WebPart so konfiguriere, dass ausschließlich Dokumente aus dem aktuellen Web dargestellt werden und das bitte dynamisch auf Basis von Tags und ausgerollt über die gesamte SiteCollection.

Okay, fassen wir mal zusammen:

Ausgerollt über die gesamte SiteCollection
Dann nehmen wir doch  Ergebnisquellen. Zentral konfigurierbar, kann jedes Content Search WebPart in der SiteCollection verwenden und die Query kann auf Seitenfelder Filtern. CHECK!

Filter auf Dokumente
Ist doch SharePoint Standard, einfach der Query folgendes mitgeben: IsDocument:True
CHECK!

Filter auf Tags
Ein Feld für Managed Metadata existiert bereits auf der Seite und wird durch die SharePoint Suche bereits indiziert. Also: term1:{Page.term1} 
CHECK!

 

Filter auf aktuelles Web
Na klar, nutzen wir die Managed Property Path, enthält den Pfad zum Dokument und kann auch über {Site.URL} eingeschränkt werden. CHECK! CHECK?
Denkste!!!

Die Einschränkung auf Path gibt zwar Elemente auf Basis des aktuellen Webs zurück, jedoch rekursiv!

Diese Konfiguration ist jedoch nicht gewünscht und entspricht nicht der Anforderung. Also, ab auf die Suche…

Nach intensiver Suche nach einer Lösung konnte ich eine Möglichkeit finden, auf das aktuelle Web einzuschränken: WebId

Die WebId wird von jedem Item im SharePoint mitgeführt und ermöglich also die Suche innerhalb eines bestimmten Webs. Die Einschränkung auf das aktuelle Web ist damit jedoch nicht automatisch gegeben. Klar können wir für jedes Web die ID identifizieren und in jedes Suchwebpart hinterlegen, nur wo bleibt die Dynamik?

Um dem Problem Herr zu werden, habe ich mir den SharePoint-eigenen Abfragegenerator zur Brust genommen und verschiedenste Ansätze geprüft. Nach ein paar Kaffee und vielen grauen Haaren weiter, konnte ich die Lösung für das Problem identifizieren.

WebId:{Web.Id}

Dieser Teil einer Abfrage kann in einer Ergebnisquelle hinterlegt werden und wird dynamisch auf den einzelnen Seiten gefüllt.

CHECK!!!

Anforderung erfüllt!

Die Ergebnisquelle ist fertig und die Content Search WebParts können in der SiteCollection ausgerollt werden. Es werden nun ausschließlich Dokumente aus dem aktuellen Web dargestellt.

Und falls Ihr sie selbst verwenden wollt, hier einmal die vollständige Abfrage:

term1:{Page.term1} AND IsDocument:True AND WebId:{Web.Id}

 

Leave a Comment

Your email address will not be published. Required fields are marked *