2015-10-19 61 views
2

我正在使用Sitecore 8.我有一个多语言站点。有不同语言内容的项目,当我尝试搜索时,项目也属于其他语言。假设我有一个英文名称为“ABC”的项目以及其日文,韩文和中文版本的相应版本(内容翻译为相应的语言)。如果我在韩语中使用关键字“ABC”进行搜索,那么预期结果为0,但是,即使韩文版中没有包含“ABC”字样的项目名称,我也会得到韩文版本的项目。 在代码中,我过滤基于语言查询下面给出:Sitecore Lucene搜索提取多语言站点搜索中的其他语言项目

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

,我根据标题和项目的内容得到下面的结果给出:

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

哪里单词是基于空间切片的搜索字符串。

请指导我解决这个问题。

回答

4

where条款包括|| x.Content.Contains(word))

SearchResultItem类的Content属性是所有记号化领域,包括项目名称的串联。所以出于这个原因,我认为这种行为是正确的。

我推荐使用您要搜索的特定字段而不是使用Content

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

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

这些博客文章指从该Content属性是_content计算索引字段的。