代码之家  ›  专栏  ›  技术社区  ›  TamerM

Sitecore内容搜索:我必须指定语言吗?

  •  2
  • TamerM  · 技术社区  · 10 年前

    我正在使用 IProviderSearchContext 在Sitecore 8.1中搜索特定项目(Lucene search),我得到每个项目的两个版本(en,ar)。 我的问题是:我必须说明: item.Language == Sitecore.Context.Language.Name 对于每个查询,是否有方法 IP提供程序搜索上下文 根据当前Sitecore上下文中的语言获取数据?

    2 回复  |  直到 10 年前
        1
  •  2
  •   Vlad Iobagiu    10 年前

    索引提供程序对于索引非常初级。 使用Sitecore.Data进行正常查询。项目您的结果将自动根据上下文语言和最新项目版本进行筛选,在使用索引时不会进行此类筛选。 除非在Linq查询中指定,否则您将收到所有版本和所有语言。

    使用索引时必须使用:item。语言==Sitecore.Context.Language。如果要按当前语言筛选结果,请输入名称。 要使用上述筛选,还需要从SearchResultItem继承ResultItem类。否则,ResultItem需要向类中添加一个新的索引字段,如上面所示:

      [IndexField(“_language”)]
      public string Language { get; set; }
    
        2
  •  2
  •   Wesley Lomax    10 年前

    您还可以传递 CultureExecutionContext 这将按语言限制结果。

    var culture = Sitecore.Context.Language.CultureInfo;
    
    var queryable = context.GetQueryable<SearchResultItem>(new CultureExecutionContext(culture));
    

    有关这方面的更多信息,请参见 this 邮递