【问题标题】:Site search is not filtering results based on Language站点搜索未根据语言过滤结果
【发布时间】:2015-10-19 17:33:32
【问题描述】:

例如 有一个英文名称为“ABC”的项目及其对应的日文韩文版本(有翻译内容)。
如果搜索关键字是“ABC”,然后在韩语中 0 结果是预期的,但不是返回韩语版本,即使没有单词“ABC”也需要项目名称。

下面是过滤代码:

query = query.Filter(item => item.Language == Sitecore.Context.Language.Name);

获取结果:

 query = query.Where(x => x.Title.Contains(word) || x.Content.Contains(word));

请提供您对此问题的意见。

网站核心版本:8.0

搜索引擎:Lucene

【问题讨论】:

    标签: lucene sitecore


    【解决方案1】:

    您的where 子句包括|| x.Content.Contains(word))

    SearchResultItem 类的 Contentproperty 是所有标记化字段的串联,包括项目名称。所以出于这个原因,我认为这种行为是正确的。

    我建议使用您要搜索的特定字段,而不是使用Content

    您的项目中可能有一个名为 "content" 的字段。如果是这种情况,那么您可以通过简单地将其映射到不同的属性来避免 POCO 中的属性名称冲突,如下所示:

    [IndexField("content")]
    public virtual string ContentField { get; set; }
    

    这些博客文章引用了 _content 计算索引字段,Content 属性是从该字段派生而来的。

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 2023-03-19
      • 2015-02-09
      • 1970-01-01
      • 2012-06-08
      • 2020-08-24
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多