站点搜索未根据语言过滤结果

Site search is not filtering results based on Language

例如有一个英文名称为"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));

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

Sitecore 版本:8.0

搜索引擎:Lucene

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

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

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

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

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

这些博文引用 _content 计算索引字段,Content 属性 从中派生。