2016-08-17 105 views
0

我正在使用sitecore 8,并且正在寻找一种方法来为我的所有sitecore内容运行全文搜索。我有一个解决方案,但我觉得有一个更好的方法来做到这一点。Sitecore:使用lucene进行全文搜索

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

,因为它变得非常复杂,如果我需要,以提高匹配标题VS身体的项目,即我松散的现场级提高我不喜欢这种方式。

FYI:我的代码是非常相似,这so post

感谢

回答

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不是创建高质量全文网站搜索的绝佳解决方案。如果这是一个重要的要求,你可能想看看科科甚至像谷歌网站搜索。