2017-05-30 88 views
0

我們已經在Sitecore中的每個項目下存儲了不同的語言版本內容,我們需要爲每種語言創建不同的索引,如果我們有意大利和法國版本的主頁頁面存儲爲 我們需要不同的爲主頁的其他語言版本的指標是有其i指數配置文件Solr爲Sitecore建立索引

乾杯 GA

+0

你指的是項目的不同語言版本?爲什麼你想爲它們創建單獨的索引?只需將您的上下文語言添加到查詢中,您將只收到所選語言的搜索結果。 –

+0

是的不同版本的項目,因爲我們的內容是巨大的每種語言和其他原因以及我們需要不同的索引每種語言 – user2332873

回答

0

做,這是通過創建一個自定義的履帶,下面的唯一途徑的任何設置是配置了英語示例代碼語言作爲索引語言,我認爲你可以從那裏開始:

所有的信息可以在這裏找到: https://ggullentops.blogspot.be/2016/10/custom-sitecore-index-crawler.html

private string indexLanguage; 

public string Language 
{ 
    get { return !string.IsNullOrEmpty(indexLanguage) ? indexLanguage : null; } 
    set { indexLanguage = value; } 
} 

protected override void DoAdd(IProviderUpdateContext context, SitecoreIndexableItem indexable) 
{ 
    Assert.ArgumentNotNull(context, "context"); 
    Assert.ArgumentNotNull(indexable, "indexable"); 
    using (new LanguageFallbackItemSwitcher(context.Index.EnableItemLanguageFallback)) 
    { 
    Index.Locator.GetInstance<IEvent>().RaiseEvent("indexing:adding", context.Index.Name, indexable.UniqueId, indexable.AbsolutePath); 
    if (!IsExcludedFromIndex(indexable, false)) 
    { 
     foreach (var language in indexable.Item.Languages) 
     { 
     // only include English 
     if (!language.Name.Equals(indexLanguage, StringComparison.OrdinalIgnoreCase)) 
     { 
      continue; 
     } 

     Item item; 
     using (new WriteCachesDisabler()) 
     { 
      item = indexable.Item.Database.GetItem(indexable.Item.ID, language, Version.Latest); 
     } 

     if (item == null) 
     { 
      CrawlingLog.Log.Warn(string.Format(CultureInfo.InvariantCulture, "SitecoreItemCrawler : AddItem : Could not build document data {0} - Latest version could not be found. Skipping.", indexable.Item.Uri)); 
     } 
     else 
     { 
      SitecoreIndexableItem sitecoreIndexableItem; 
      using (new WriteCachesDisabler()) 
      { 
      // only latest version 
      sitecoreIndexableItem = item.Versions.GetLatestVersion(); 
      } 

      if (sitecoreIndexableItem != null) 
      { 
      IIndexableBuiltinFields indexableBuiltinFields = sitecoreIndexableItem; 
      indexableBuiltinFields.IsLatestVersion = indexableBuiltinFields.Version == item.Version.Number; 
      sitecoreIndexableItem.IndexFieldStorageValueFormatter = context.Index.Configuration.IndexFieldStorageValueFormatter; 
      Operations.Add(sitecoreIndexableItem, context, index.Configuration); 
      } 
     } 
     } 
    } 

    Index.Locator.GetInstance<IEvent>().RaiseEvent("indexing:added", context.Index.Name, indexable.UniqueId, indexable.AbsolutePath); 
    } 
} 
+0

感謝您的更新我正在嘗試這個,但這個customCrawler照顧更新和刪除索引。 – user2332873

+0

在博客文章中,您也可以找到更新代碼。 –

+0

我創建了自定義Sitecrawaler,並在索引配置中指定了它,但無法獲得語言特定的索引,例如我無法獲取特定於語言的索引。任何指針 – user2332873