Como indexar guids utilizando Coveo e Sitecore mantendo o formato original – Parte 1

Recentemente eu trabalhei em um projeto de Sitecore, no qual eu necessitava indexar o ID de um item de Sitecore e manter o formato de guid original utilizando Coveo. Em tempo de indexação, o Coveo altera o formato das guids para o formato short guid.

Por exemplo, esta guid {FBC05E55-55CA-443C-A3BA-7AE5AA14E2CF} seria transformada neste valor fbc05e5555ca443ca3ba7ae5aa14e2cf, após indexado.

Isso é feito porque existe um conversor associado com o tipo Sitecore.Data.ID(que é o tipo correspondente do ID dos itens de Sitecore), responsável por transformar o tipo specífico em tempo de indexação do formato guid para short guid. Enquanto eu procurava opções, eu postei uma pergunta no forum da Coveo  e me foi sugerido criar um conversor(ConversionType) e um tipo específico para resolver este problema.

Entendendo ConversionTypes

ConversionTypes são uteis para mapear como o Coveo Enterprise Search manipula cada tipo encontrado em tempo de indexação(maiores detalhes do processo de conversão aqui). Utilizando o exemplo descrito acima, quando o Coveo está indexando, para cada tipo dos campos diferentes de Sitecore(fields) será feito um mapeamento entre o tipo indexado e o conversionType correspondente. Complicado?

Pense assim: Toda vez que o Coveo indexar uma guid ele vai usar o conversor para fazer a guid ser indexada como short guid. O mesmo ocorre para outros tipos.

Certo, mas onde o mapeamento é feito? Que bom que você perguntou 🙂

Se voce abrir o arquivo Coveo.SearchProvider.config e procurar a seção ConversionType, voce verá que o tipo Sitecore.Data.ID está associado com o conversionType IndexFieldGuidValueConverter. Isso garantirá que as guids sejam indexadas como short guids em tempo de indexação.

A conversão em si acontece no método ConvertTo. O método ConvertTo para esta classe é definido da seguinte forma:

public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
     return ID.Parse((Guid)value).ToShortID().ToString().ToLowerInvariant();
}

Na parte 2 deste post, eu explicarei como eu implementei um conversor customizado, fazendo com que o tipo guid, ao ser indexado mantivesse o seu formato original.

Clique aqui pra ver a parte 2

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s