Troubleshoot SharePoint 2013 search queries 101

There are some easy steps I follow every time I have to troubleshoot SharePoint 2013 search queries when I’m quite sure that I should get some result but the Search Result (or Content By Search, aka CBS) Web Part do not agree.

First of all, I have to admit, I’m not perfect and I know that very well so the first thing I double check is the query I wrote. I usually re-write the query from scratch using a tool other than out-of-the-box Query Builder, SharePoint 2013 Search Query Tool (v2.x).

(more…)

Articolo su SPC.it – Creare Custom Entity Extractors in SharePoint 2013

Qualche giorno fa è stato pubblicato su SharePointCommunity.it un mio nuovo articolo su come creare custom entity extractors in SharePoint 2013? Siete curiosi di sapere di cosa si tratta? Beh, cosa aspettate, questo è il link ;)

Nell’articolo ho “dimenticato” di dire che out-of-the-box abbiamo già a disposizione un dizionario per l’estrazione dei termini. Si tratta del dizionario delle “companies”, cioè un elenco di nomi di aziende che il servizio di ricerca potrà ricercare nel titolo e nel corpo dei nostri documenti.

(more…)

Configuration Cache e Managed Property

Oggi mi sono scontrato con un problema fastidioso che ad un certo punto mi ha fatto dubitare di tutte le mie certezze in tema di Enterprise Search.

In una farm SharePoint 2013 ho creato “n” managed properties che avrei dovuto utilizzare unicamente come filtri espliciti (property restriction), ad esempio SPContentType:Documento.

Una volta definite le managed properties come queryable ed eseguito il Full Crawl del sito mi aspettavo di non aver alcun problema nell’esecuzione di una ricerca, ma così non è stato. Le ricerche non restituivano alcun risultato. Ho confrontato le impostazioni delle mie managed property con una analoga Out-Of-The-Box; tutto preciso. Peccato solo che le ricerche a fronte di  quella OOTB funzionasse e utilizzando le mie no, 0 results. (more…)

Troubleshooting SharePoint 2013 Display Templates

Uno degli aspetti di SharePoint 2013 su cui mi sono concentrato particolarmente in questi mesi è il nuovo servizio di ricerca, sia dal punto di vista dell’architettura che da quello “site-builder”.

Lavorando con i display templates mi sono imbattuto in uno strano problema di “aggiornamento” dei dati, o almeno così pensavo. Dopo aver creato Result Source, Display Template e Result Type il cliente con cui lavoravo mi ha chiesto se fosse possibile cambiare alcuni dei metadati visualizzati nei risultati della ricerca. Nessun problema, basta modificare questo file (display template) e… nulla, tutto uguale a prima.

La prima cosa che ho fatto a questo punto è stata di “esplorare” i dati restituiti dalla query con Fiddler. Analizzando la risposta JSON della chiamata “ProcessQuery” (/searchcenter/_vti_bin/client.svc/ProcessQuery) mi sono accordo che venivano richiamati ancora i vecchi metadati nonostante nel file html relativo al diplay template fossero indicati altri campi. (more…)

Refinement Panel: errore nel link Show more

Poche settimane fa sono incappato in un problema a dir poco “curioso”. Cliccando sul link “show more” nel refinement panel di una pagina dei risultati di ricerca personalizzata, al posto di mostrare un numero più ampio di scelte, non succedeva proprio niente.

Refinement Panel

Controllando con la developer toolbar ho notato l’errore di script seguente (The value of the property “SearchEnsureSOD” is null or undefined, not a Function object).

L’errore mi è sembrato molto strano, perchè XSLT e CSS a parte avevo solo rimosso la web part relativa al box di ricerca.

Dopo una breve ricerca ho scoperto che il punto è proprio questo. Senza la Search Box Web Part (o analgo controllo in master page) viene sollevata questa eccezione.

A questo punto mi sono incuriosito e ho cercato nel mio piccolo di approfondire un pò l’argomento. La prima cosa che ho notato analizzando le chiamate http della pagina con Fiddler è stata che con la web part in pagina vengono caricati due file javascript in più, il search.js e ajaxtoolkit.js.

Fiddler Results

Controllando l’output della pagina ho inoltre notato che, oltre a non effettuare la chiamata al file search.js, nella versione della pagina senza box di ricerca (web part o controllo non fa differenza) mancano una serie di funzioni javascript.

HTML

A pensarci bene avrei potuto fare un’altro paio di verifiche, ad esempio richiamare “a mano” il file search.js dal page layout, peccato non mi sia venuto in mente prima, maybe next time :)

SearchEnsureSOD(-Riccardo)