- Sitecore 8.2.6
- Solr 6.6.2
Проблема:
Невозможно отобразить день рождения (любой -см. вложение) поля к модели C #.Все отображаются как null
(при использовании returnType="string"
) или 01/01/0001
(при использовании returnType="datetime"
)
I 'm используя sitecore_analytics_index
для получения результатов поиска для контактов EXM.При просмотре индекса Solr (через localhost: 8984 / solr) я четко вижу поля.
dateofbirth
и contact.dateofbirth
Я вижу в коллекции Fields
при просмотре объекта в списке BirthdaySearchResultItem
возврат из поиска по индексу.
Я могудля правильного сопоставления contact.tags_sm
и contact.contactid
.
public class BirthdaySearchResultItem : SearchResultItem, IObjectIndexers
{
[IndexField("contact.tags_sm")]
public string[] ContactList { get; set; } // maps correctly
[DataMember]
[IndexField("contact.contactid")]
public virtual Guid ContactId { get; set; } // maps correctly
[DataMember]
[IndexField("contact.dateofbirth")]
public virtual DateTime BirthDay { get; set; } // have tried using "string"
[DataMember]
[IndexField("dateofbirth")]
public virtual DateTime BirthDay1 { get; set; } // have tried using "string"
[DataMember]
[IndexField("contact.dateofbirth_t")]
public virtual DateTime BirthDay2 { get; set; } // have tried using "string"
[DataMember]
[IndexField("contact.dateofbirth_t_en")]
public virtual DateTime BirthDay3 { get; set; } // have tried using "string"
[DataMember]
[IndexField("birthday")]
public virtual DateTime BirthDay4 { get; set; } // have tried using "string"
}
<index id="sitecore_analytics_index">
<configuration ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration">
<fieldMap>
<fieldNames hint="raw:AddFieldByFieldName">
<field fieldName="contact.contactid" returnType="guid"/>
<field fieldName="contact.dateofbirth" returnType="datetime"/> <!-- have tried "string" as well -->
<field fieldName="dateofbirth" returnType="datetime" />
<field fieldName="contact.dateofbirth_t" returnType="datetime" />
<field fieldName="contact.dateofbirth_t_en" returnType="datetime" />
.... omitted for brevity
var indexName = "sitecore_analytics_index";
var index = ContentSearchManager.GetIndex(indexName);
using (var context = index.CreateSearchContext()) //IContactDetailFacet
{
var predicate = PredicateBuilder.True<BirthdaySearchResultItem>();
var test = context.GetQueryable<BirthdaySearchResultItem>().ToList();
}