Stavo giocando con gli indici di ricerca personalizzati per SDL Tridion 2011 (GA). Ho ottenuto qualcosa lavorando, usando il very helpful information provided by Arjen, tuttavia non sono sicuro che la mia esecuzione sia l'opzione migliore.Gestore dell'indice di ricerca Tridion personalizzato: campo personalizzato vs standard per l'URL della pagina?
L'esigenza è di essere in grado di cercare le pagine nel CMS tramite url (ad es. Www.example.com/news/index.html). Per fare questo ho creato una classe usando l'interfaccia ISearchIndexingHandler
(codice sotto). Sto indicizzando l'url nel campo ContentText dell'articolo, tuttavia non sono sicuro che questo normalmente contenga qualcos'altro per una pagina (penso che una pagina contenga solo metadati, quindi dovrebbe essere OK). Il vantaggio di utilizzare questo su un campo personalizzato è che posso semplicemente digitare l'url nella casella di ricerca senza dover usare <url> nel < nome di campo > o qualcosa del genere.
Quindi la mia domanda è, c'è qualche ragione per non usare ContentText per Pages, e c'è qualche vantaggio nell'usare un campo personalizzato? Anche i contrassegni bonus vanno a chiunque abbia buone idee su come gestire BluePrinting (se creo una pagina in una pubblicazione principale, voglio che anche gli URL locali vengano indicizzati nelle pubblicazioni secondarie) e il caso in cui un percorso del gruppo Struttura è alterato (Credo di poter in qualche modo innescare un reindicizzazione degli elementi della pagina figlio dal mio gestore di indicizzazione).
Il codice:
using System;
using Tridion.ContentManager.Search;
using Tridion.ContentManager.Search.Indexing.Handling;
using Tridion.ContentManager.Search.Indexing.Service;
using Tridion.ContentManager.Search.Indexing;
using Tridion.ContentManager.Search.Fields;
namespace ExampleSearchIndexHandler
{
public class PageUrlHandler : ISearchIndexingHandler
{
public void Configure(SearchIndexingHandlerSettings settings)
{
}
public void ExtractIndexFields(IdentifiableObjectData subjectData, Item item, CoreServiceProxy serviceProxy)
{
PageData data = subjectData as PageData;
if (data != null)
{
PublishLocationInfo info = data.LocationInfo as PublishLocationInfo;
string url = GetUrlPrefix(data) + info.PublishLocationUrl;
item.ContentText = url;
}
}
private string GetUrlPrefix(PageData page)
{
//hardcoded for now, but will be read from publication metadata
return "www.example.com";
}
}
}
Un buon punto a proposito dell'attivazione del reindicizzazione solo se è stato modificato un URL di pubblicazione SG: questo potrebbe evitare un pesante reindicizzazione per siti di grandi dimensioni. Siccome gli SG non sono versionati, immagino che l'unico modo per farlo sia nel sistema degli eventi come hai detto tu. – Will
Sì, la modifica era corretta. Ho inteso il gruppo di strutture al posto di Page. –