Sitecore:使用lucene进行全文搜索

时间:2016-08-17 12:51:42

标签: lucene sitecore

我正在使用sitecore 8,而我正在寻找一种方法来对我的所有sitecore内容进行全文搜索。我有一个解决方案,但我觉得必须有一个更好的方法来做到这一点。

我的方法: 我有一个计算字段,将所有文本字段合并为一个计算字段。在执行搜索之前,我会对搜索文本进行标记,并构建一个ORed谓词以匹配该字段。

我不喜欢这种方法,因为如果我需要增加与标题和身体相匹配的项目,即我放松了场地级别提升,它会变得非常复杂。

仅供参考:我的代码与此so post非常相似。

由于

1 个答案:

答案 0 :(得分:1)

Sitecore已经维护了一个包含所有文本字段的全文字段_content。您可以针对该搜索运行搜索。您甚至可以创建添加到_content的计算字段(例如数据源内容示例here)。

因此,假设您正在为全文搜索构建LINQ查询,并且已经对模板,最新版本,位置等进行了过滤,则将搜索词添加到查询中将如下所示:

var terms = SearchTerm.Split();
var currentExpression = PredicateBuilder.True<SiteSearchResultItem>();
foreach (var term in terms)
{
    //Content is mapped to _content
    currentExpression = PredicateBuilder.And(currentExpression, x => x.Content.Contains(term));
}
query = query.Where(currentExpression);

通常,您希望AND搜索术语而不是ORing它们。

你是对的,在这种情况下失去了场地级别的提升。最后,Lucene不是创建高质量全文站点搜索的绝佳解决方案。如果这是一项重要要求,您可能需要查看Coveo甚至是Google Site Search。

相关问题