Come posso personalizzare la visualizzazione dei risultati della ricerca BDC?
-
10-12-2019 - |
Domanda
Ho aggiunto una fonte di contenuto di ricerca per la mia applicazione BDC e i risultati vengono popolati correttamente. Fin qui tutto bene! Non mi piace molto il modo in cui i risultati vengono visualizzati, però.
Problema 1: Titoli di risultato
Il titolo del risultato è sempre il nome del file della pagina del profilo. Ovviamente, poiché ogni articolo di un tipo ha la stessa pagina del profilo, questo non è davvero utile. C'è un modo per me per cambiare ciò che viene visualizzato lì? Idealmente, sarebbe una combinazione di alcuni campi diversi sull'oggetto, come il nome del nome + cognome.
Usando lo screenshot sottostante come esempio, vorrei modificare il link che dice customer_1.aspx, proprio sopra lo snippet del contenuto.
Problema 2: Snippet di testo
C'è un modo per forzare il risultato della ricerca per visualizzare determinati campi dall'elemento? In questo esempio, per una ricerca di contatti, forse vorrei mostrare il proprio numero di telefono e indirizzo e-mail subito, per salvare l'utente dal dover fare clic su e attendere che la pagina del profilo da caricare solo per ottenere informazioni di contatto di base. .
Aggiornamento: Tipo di risultato
Ho ricercando questo la maggior parte del giorno e ho imparato che ho bisogno di creare un tipo di risultato per il mio tipo di contenuto esterno. Una volta che ho, posso creare modelli di visualizzazione personalizzati. Ho provato questo un mucchio di volte, ma non riesco ancora a farlo funzionare.
Ho creato una proprietà gestita su una delle colonne (un numero intero non nullo che è solo su questo tipo di record), ma non ho trovato un'impostazione della partita della proprietà che funzionerà. Qualche suggerimento?
Soluzione
La soluzione è creare un nuovo modello di visualizzazione che include i campi BCS come proprietà gestite. È necessario aggiungere le proprietà gestite nell'applicazione del servizio di ricerca in schema di ricerca, quindi fare un crawl completo.
Copia un modello di visualizzazione esistente e quindi aggiungere le proprietà gestite e il rendering della logica in modo da sembrare il modo desiderato.
È possibile seguire questa guida: http://www.ableblue.com/blog/archive/2013/06/05/introduction-to-SharePoint-2013-Display-Templates/ Per il debug: http:// www .AbleBlue.com / Blog / Archivio / 2014/03 / 01 / Creazione-A-diagnostica-Modello-Modello /
Per il tipo di risultato hai una coppia di scelte, probabilmente il più semplice è creare una fonte di risultato. È possibile creare una fonte di risultato che include solo le entità da BCS. I risultati saranno associati al contentType dall'entità BCS. Nel mio caso la Bcsentity è "cliente" (perché ho un'entità del cliente nel mio modello BCS). In questo modo creo una regola di tipo risultato e applicalo al mio risultato sorgente. Sembra che il tuo sarà qualcosa come l'Asicustomer.
Un'altra alternativa è creare una regola come ASICustomerNumber contains "1,2,3,4,5,6,7,8,9,0"
Altri suggerimenti
Soluzione al problema 1 (e forse anche 2)
È necessario configurare l'host della pagina del profilo del tipo di contenuto esterno Per farlo potrebbe seguire questa guida http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/04/15/how-to-Create-a-BCS-profile-Page-in-SharePoint-2010.aspx
Spero che questo possa aiutarti.
Ri: La Domanda OP n. 1, "Come si visualizza una proprietà gestita al posto del campo del titolo (nome della pagina del profilo per BDC ECTS) nel modello di visualizzazione?" (parafrasato).
Basato sulla lettura dei vari post dei blog di Lettura di Matthew's e Bella Engen su questo argomento vedo due possibili soluzioni. Non ho ancora implementato neanche uno.
- .
- Modifica
Item_CommonItem_Body.html
per sostituire l'uscita del campo del titolo. Questo modello di visualizzazione comune è chiamato dal modello di visualizzazione tramite la linea_#=ctx.RenderBody(ctx)=#_
- in linea il codice da
Item_CommonItem_Body.html
nel modello di visualizzazione Sostituzione della linea_#=ctx.RenderBody(ctx)=#_
per (1), in
Item_CommonItem_Body.html
Modifica la lineavar titleHtml = String.format(...);
per emettere la proprietà gestita desiderata. Ovviamente questo influenza molti modelli di visualizzazione nel Centro di ricerca. Questo potrebbe non essere quello che vuoi.per (2), se si dispone di più tipi di risultato, quindi più modelli di visualizzazione dell'articolo dovrai in linea il codice più volte.
Nessuna di queste è una grande soluzione.
Fare riferimento al blog di Matteo partendo da Introduzione ai modelli di visualizzazione SharePoint 2013 e Blog Blog Series Come modificare il modo in cui i risultati della ricerca vengono visualizzati in SharePoint Server 2013
RE: the OP question #1 redux, I did more research and found what is likely the preferred solution for 80% of cases. I left my other answer in case the details are useful for the other 20% of casses.
To recap, "How do you display a managed property in place of the Title field (profile page name for BDC ECTs) in the display template?" (paraphrased).
Answer: For BDC / search scenario, map the managed property Title to the crawled property corresponding to the desired entity field.
- Start by browsing to your search service application
- Open Search Schema > Managed Properties
- Filter to properties that contain "Title"
- Edit the "Title" property
- Add mapping to the required crawl property(ies)
If you need a crawled property for an aggregate of entity fields, instead create a composite field on the entity because only a single crawled property value will be mapped.
- Recrawl
- Recrawl again
I found that the managed property and search results (display template) did not render the correct value from the crawled property until after a couple of crawls or a few hours later. Not sure why.