Suchabfrage: Filter nach „mit leerem Datum“ – Gewusst wie!

Man stelle sich das folgende Szenario vor: In einer SharePoint-Umgebung werden auf verschiedenen Web-Seiten Ankündigungen (wir gehen mal von einer fiktiven ContenttypeId von „a1“ aus) erstellt und können mit einem Ablaufdatum (zugehörige Managed Property sei „Ablaufdatum“ vom Typ DateTime) versehen werden. Sofern die Ankündigung dauerhaft angezeigt werden soll, kann dieses Feld jedoch auch leer bleiben.

Unsere Aufgabe nun:

Erstellen Sie ein Inhaltssuche-Webpart auf der Startseite der Sitecollection und zeigen Sie alle Ankündigungen (Einschränkungen wie Ergebnisanzahl seihen in diesem Beispiel mal egal 🙂 ) an, die noch nicht abgelaufen sind.

Kein Problem! sagen wir uns und definieren die folgende Suchabfrage in den Webparteinstellungen:

ContentTypeId:a1* Ablaufdatum>{Today}

Soweit so gut. Uns werden nun alle Ankündigungen angezeigt, bei denen das Ablaufdatum noch über dem heutigen Datum liegt. Aber eben auch nur die. Ankündigungen ohne Ablaufdatum werden uns nicht angezeigt. – Mist!

Versuch zwei:

ContentTypeId:a1* (Ablaufdatum>{Today} OR Ablaufdatum:"")

Haha, ausgetrickst! .. oder auch nicht: Wenn das Feld Ablaufdatum nicht gefüllt ist, ist auch die Managed Property nicht gefüllt, somit können wir auch nicht abfragen, ob die Managed Property einen leeren Wert enthält. – Mist!

OK. Versuch Nummer drei:

ContentTypeId:a1* -Ablaufdatum<={Today}

Versuchen wir es mal anders herum: Es werden nun also nur die Ankündigungen angezeigt, bei denen das Ablaufdatum nicht kleiner oder gleich dem heutigen Datum ist. Die Ergebnismenge ist immer noch die gleiche. Es klingt aber schon einmal richtiger.

Wir brauchen nun also die Elementmenge bei denen das Datum nicht kleiner oder gleich dem heutigen Datum ist oder eben nicht ein Datum ist. Nicht ein Datum => Nicht in der Menge aller Daten vom ersten Ablaufdatum bis heute. Also  {ErstesAblaufdatum}..{Today} Aha!

Was ist nun das erste Ablaufdatum? Hier können wir annehmen, dass es sich hier wohl um kein Datum vor dem 01.01.1970 handeln wird. Wenn wir von diesem Datum ausgehen, sollte unser Überprüfungsbereich definitiv groß genug sein.

Versuch Nummer vier:

ContentTypeId:a1* -Ablaufdatum:1970-01-01..{Today}

Mit dieser Konfiguration werden nun alle Angündigungen angezeigt, außer den Ankündigungen, bei denen sich das Ablaufdatum zwischen dem 01.01.1970 und heute befindet, also auch solche, bei denen es kein Ablaufdatum gibt!

Ziel erreicht!

Dieses Vorgehen funktioniert jedoch leider nur bei Managed Properties vom Typ Datum und Zahl.

Leave a Comment

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