例如有一个英文名称为“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
答案 0 :(得分:4)
您的where
条款包含|| x.Content.Contains(word))
Content
类的SearchResultItem
属性是所有标记化字段的串联,包括项目名称。因此,我认为这种行为是正确的。
我建议您使用要搜索的特定字段,而不是使用Content
。
您的商品中可能有一个名为"content"
的字段。如果是这种情况,那么您可以通过简单地将其映射到不同的属性来避免POCO中的属性名称冲突,如下所示:
[IndexField("content")]
public virtual string ContentField { get; set; }
这些博文引用了_content
计算的索引字段,Content
属性派生自该字段。