Et datofilter i forespørgslen i PnP Modern Search
En forespørgselsskabelon, der kun viser elementer med en bestemt indholdstype, hvis slutdato ikke er passeret. Hvad hver del gør, og hvorfor datoegenskaben som regel skal mappes til en RefinableDate.
Min forespørgsel fra 2024 i en Search Results-webdel fra PnP Modern Search. Den viser kun elementer med indholdstypen Information, hvis slutdato ikke er passeret, så en meddelelse forsvinder af sig selv, når den er udløbet. Det er samme slags løsning som Driftsmeddelelser på forsiden med PnP Modern Search.
{searchTerms} SPContentType:"Information" AND operationalinfoenddateOWSTDATE>today
Den står i webdelens Query template under datakilden SharePoint Search. Standardværdien er {searchTerms} alene (PnP).
Delene#
{searchTerms}er det, der er skrevet i en forbundet søgeboks. Uden søgeboks er den tom, og resten af skabelonen gør arbejdet.SPContentType:"Information"begrænser til indholdstypen med det navn.operationalinfoenddateOWSTDATE>todayer datofilteret.todayer et reserveret ord i KQL, der dækker hele dagen i dag (KQL-referencen).
Datoegenskaben#
En webstedskolonne med indhold bliver automatisk til en administreret egenskab ved gennemsøgningen. Navnet er kolonnens navn uden mellemrum plus et suffiks for kolonnetypen. For Dato og klokkeslæt er suffikset ifølge Microsofts tabel OWSDATE, ikke OWSTDATE som i min forespørgsel, og egenskaben er af typen tekst (Microsoft). Microsoft skriver, at den form ikke kan bruges med større end eller mindre end, kun til at finde en bestemt dato. Tabellen står under SharePoint Server. Det rigtige navn i tenanten findes i søgeskemaet.
Den dokumenterede vej til et datofilter er at mappe kolonnen til en ledig RefinableDate-egenskab, som er af typen dato og kan forespørges, sorteres og bruges som filter:
- SharePoint admin center → More features → Search → Manage search schema.
- Find den gennemsøgte egenskab. For en kolonne med det interne navn
OperationalInfoEndDateer detows_OperationalInfoEndDate. Den medows_q_DATE_er den automatisk oprettede og skal ikke bruges. - Åbn en ledig
RefinableDate00,RefinableDate01osv., og map den gennemsøgte egenskab til den. Et alias gør den lettere at finde igen. - Webstedsindstillinger → Search and offline availability → Reindex site, så værdierne kommer ind ved næste gennemsøgning.
Så bliver filteret:
{searchTerms} SPContentType:"Information" AND RefinableDate00>today
Det der driller#
- Kun webstedskolonner bliver automatisk til administrerede egenskaber. En kolonne, der er oprettet direkte på listen, gør ikke.
- Tiderne er UTC. KQL regner datoer i UTC. En dato uden klokkeslæt gemt på et dansk websted er midnat dansk tid, altså 22.00 eller 23.00 dagen før i UTC. Filtre omkring dagsskiftet kan ramme en time eller to ved siden af.
>todaymod et interval.todayer hele dagen, og Microsoft viser kun eksempler med=. Hvad>gør mod et interval, har jeg ikke efterprøvet. Skal en meddelelse, der slutter i dag, stadig vises, er det værd at teste med en slutdato i dag.- Sortering og filtre kræver en
Refinable-egenskab. Webdelens liste over sorterbare egenskaber viser ikke dem alle, så navnet skal skrives ind i hånden (PnP). - Egne tokens. PnP Modern Search har også sine egne datotokens, fx
{Today+7}for en dato syv dage frem (PnP).