2014-07-16 1 views
2

저는 내 프로젝트 Sitecore7 MVC, Solr 및 Glass Mapper를 사용하고 있습니다.Glass.Mapper.Sc는 sitecore7 검색에 인덱스 필드를 사용합니까

"ContentSearch"색인에는 sitecore 템플리트에 사용 된 거의 모든 필드가 들어 있습니다. GlassMapper 클래스를 내 모델 (Sitecore 필드 인 속성은 거의 포함하지 않음)로 사용하고 쿼리합니다. 기본적으로 여기에 설명 된대로 "사용자 지정 결과 클래스 사용"을 수행합니다. http://glass.lu/docs/tutorial/sitecore/tutorial25/tutorial25.html

예상대로 작동합니다.

내 질문은 :

그것은 한 인덱스가 (내가 원하는입니다) 존재 SOLR 인덱스를 사용하여 (필드 전형적으로 sitecore) 클래스 속성을 채우는 있습니까?

또는

그것은 필드 값을 얻을 수 sitecore 예정? (내가 생각하기에 비효율적이며 어떤 경우에 glassMapper 클래스를 채우기 위해 사용자 정의 클래스를 작성하고 반복 할 것입니다. 제 견해로 GlassMapper 클래스를 제 모델로 사용했기 때문입니다)

예를 들어 내 모델 중 하나는 다음과 같습니다 : 나는 실제로 단지 Glass.Mapper 내 포크에 몇 가지 코드를 밀어

[SitecoreType] 
    public class MyAwesomeModel 
    { 
     [SitecoreId] 
     [IndexField("_id")] 
     public virtual Guid Id { get; set; } 

     [SitecoreInfo(SitecoreInfoType.Language)] 
     [IndexField("_language")] 
     public virtual string Language { get; set; } 

     [TypeConverter(typeof(IndexFieldItemUriValueConverter))] 
     [XmlIgnore] 
     [IndexField("_uniqueid")] 
     public virtual ItemUri Uri { get; set; } 

     [SitecoreInfo(SitecoreInfoType.Version)] 
     public virtual int Version 
     { 
      get 
      { 
       return Uri == null ? 0 : Uri.Version.Number; 
      } 
     } 

     [SitecoreField(FieldName="MyRichtextField")] 
     [IndexField("MyRichtextField")] 
     public virtual string RichTextContent { get; set; } 

     [SitecoreInfo(SitecoreInfoType.Url, UrlOptions = SitecoreInfoUrlOptions.LanguageEmbeddingNever)] 
     public virtual string Url { get; set; } 
    } 

답변

5

그 권리를 않습니다 : https://github.com/csteeg/Glass.Mapper합니다 (개발 지점에서) 당신이 사용할 것이다, 그래서 당신의 설정을 패치해야

유리 특정 콘텐츠 검색 설정 :

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore> 
    <contentSearch> 
     <indexConfigurations> 
     <defaultLuceneIndexConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider"> 
      <indexDocumentPropertyMapper> 
      <objectFactory type="Sitecore.ContentSearch.DefaultDocumentMapperObjectFactory, Sitecore.ContentSearch"> 
       <patch:attribute name="type">Glass.Mapper.Sc.ContentSearch.LuceneProvider.GlassDocumentMapperObjectFactory, Glass.Mapper.Sc.ContentSearch.LuceneProvider</patch:attribute> 
      </objectFactory> 
      </indexDocumentPropertyMapper> 
     </defaultLuceneIndexConfiguration> 
     </indexConfigurations> 
     <configuration type="Sitecore.ContentSearch.ContentSearchConfiguration, Sitecore.ContentSearch"> 
     <indexes hint="list:AddIndex"> 
      <index id="sitecore_master_index"> 
      <patch:attribute name="type">Glass.Mapper.Sc.ContentSearch.LuceneProvider.GlassLuceneIndex, Glass.Mapper.Sc.ContentSearch.LuceneProvider</patch:attribute> 
      </index> 
      <index id="sitecore_web_index"> 
      <patch:attribute name="type">Glass.Mapper.Sc.ContentSearch.LuceneProvider.GlassLuceneIndex, Glass.Mapper.Sc.ContentSearch.LuceneProvider</patch:attribute> 
      </index> 
      <index id="sitecore_core_index"> 
      <patch:attribute name="type">Glass.Mapper.Sc.ContentSearch.LuceneProvider.GlassLuceneIndex, Glass.Mapper.Sc.ContentSearch.LuceneProvider</patch:attribute> 
      </index> 
     </indexes> 
     </configuration> 
    </contentSearch> 
    </sitecore> 
</configuration> 

코드는 인덱스에 값이 저장된 경우 먼저 값을 반환합니다. 인덱스에 저장되지 않은 속성이 요청되면 Sitecore 항목에서 값을 가져옵니다.

관련 문제