网站搜索不会根据语言过滤结果

时间:2015-10-19 17:33:32

标签: lucene sitecore

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

1 个答案:

答案 0 :(得分:4)

您的where条款包含|| x.Content.Contains(word))

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

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

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

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

这些博文引用了_content计算的索引字段,Content属性派生自该字段。