Content Search Web Part: filtrare elementi sulla base della data di scadenza

Posted on May 3, 2013

0


La mia esigenza è di filtrare una serie di Notizie mediante la Content Search Web part, ma solo quelle con:

  • Data di scadenza maggiore o uguale ad oggi
  • Data di scadenza vuota

Non è stato facile come supponevo.

Dopo avere inserito la Content Search Web Part in pagina ho configurato la Query in modo che la Web part mi restituisse tutti gli elementi basati sul content type da me predisposto.

image

Sono poi passata alla visualizzazione Advanced Mode, per potere perfezionare la query con gli opportuni filtri basati sulla data di scadenza.

Tra le Managed Properties disponibili come filtro, ho individuato la proprietà di mio interesse.

image

Provando ad applicare il filtro, come sopra impostato, si ottiene un errore di sintassi.

image

L’errore è dovuto al fatto che la Managed Property creata automaticamente da SharePoint 2013 sulla base della mia site column è di tipo TEXT, quindi non utilizzabile con la Query Variable {Today} che richiede una Property di tipo DATE AND TIME.

image

Ho pensato di utilizzare una delle Managed Properties di tipo DATA AND TIME che SharePoint 2013 rende disponibili e non mappate ancora su alcuna Crawled Property. Se entrate infatti nel Site Collection Search Schema, noterete che vi sono una serie di Managed Properties del tipo Date00, Date01, Date02, …

Ho pertanto mappato le Crawled Properties basate sulla mia site colum su Date00. Ho effettuato la mappatura a livello di site collection e non di Central Administration per lasciarmi la possibilità di esportare queste configurazioni dall’ambiente di sviluppo all’ambiente di produzione.

image

E ho configurato come segue la query:

image

Occorre ora lanciare un Full Crawl (o se avete abilitato il Continouos Crawl è sufficiente eseguire un Reindex dai settings della lista o delle liste che contengono gli elementi) e magicamente la Content Search Web Part visualizza le notizie con data di scadenza maggiore o uguale ad oggi.

Ma come fare per le notizie senza data di scadenza (ovvero con il campo data vuoto)?

Tralascio i tentativi fatti senza successo…

La soluzione è stata:

  1. creare una nuova site column per il mio Content Type, di tipo campo calcolato che semplicemente replica il contenuto del campo Data di scadenza (ringrazio Claudio Brotto del suggerimento)
  2. mappare la Crawled Property sulla Managed Property RefinableString00 (Property di tipo TEXT, mi raccomando e non DATE AND TIME, altrimenti la query che andremo a fare non funzionerà)
    image
  3. impostare la query come segue:
    image

Il campo calcolato, per una data nulla, presenta il seguente valore: 12/30/1899 o 30/12/1899, a seconda dei regional settings impostati nel sito.
Con la query
(Date00 >={Today}) OR (RefinableString00:1899)
stiamo dicendo alla Content Search Web Part di visualizzare le notizie con:

  • data di scadenza maggiore o uguale ad oggi
  • data di scadenza che contiene la stringa 1899

Per approfondire l’argomento consiglio questi link:

  1. Query variables in SharePoint 2013 (http://technet.microsoft.com/en-us/library/jj683123.aspx)
  2. Building Search Queries in Sharepoint 2013 (http://msdn.microsoft.com/en-us/library/jj163973.aspx)
  3. Tanta pazienza Sorriso (http://it.wikipedia.org/wiki/Pazienza)
Advertisements
Posted in: SharePoint