2017-05-30 1 views
0

Nous avons stocké différents versions de la langue contenu sous chaque élément dans Sitecore et nous devons créer des index différents pour chaque langue dire si nous avons versions version italienne et française de la page d'accueil stockée en tant que version, nous avons besoin différents index pour la version de langue de la page d'accueil est-il un paramètre qui i Index fichier de configurationSolr Indexing pour Sitecore

Vive GA

+0

Voulez-vous dire différentes versions linguistiques des articles? Pourquoi voulez-vous créer des index séparés pour eux? Ajoutez simplement votre langage contextuel à la requête et vous recevrez uniquement des résultats de recherche dans la langue de votre choix. –

+0

Oui différentes versions différentes d'éléments puisque notre contenu est énorme pour chaque langue et pour d'autres raisons nous avons besoin d'index différents pour chaque langue – user2332873

Répondre

0

la seule façon de le faire est de créer un robot personnalisé, suivant est un exemple de code qui configure les Anglais langue que la langue de l'index, je pense que vous pouvez commencer à partir de là:

Toutes les informations se trouvent ici: 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

Merci pour la mise à jour que j'essaie mais ce customCrawler s'occupera de mettre à jour et de supprimer l'indexation. – user2332873

+0

Dans le blog, vous pouvez également trouver le code de mise à jour. –

+0

J'ai créé Sitecrawaler personnalisé et spécifié même dans la configuration de l'index, mais n'a pas pu obtenir l'index spécifique à la langue par exemple, je ne pouvais pas obtenir des index spécifiques à la langue. Tout pointeur – user2332873