Sitecore 7 + Lucene:查询时间提升:如何?

时间:2013-10-07 11:24:02

标签: lucene sitecore sitecore7

对于某个模板的项目,我们的用户可以指示该项目应该显示在列表的顶部。

为此,我们在索引“ShowOnTop”中添加了一个字段。

现在,当搜索此模板的项目(构建列表页面)时,我们希望在其他项目之上有效地返回这些“ShowOnTop”项目。

但是,此字段不应影响其他网站搜索(常规搜索)。

我们认为通过对这些文档应用Query-Time Boosting可以实现这一点。但是,我们怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

要在查询时进行提升,只需使用Boost(值)方法(使用搜索谓词,因为听起来你可能正在进行一些高级搜索,其中增加了谓词的灵活性可能派上用场) -

var queryPredicate = PredicateBuilder.True<SearchResult>();
queryPredicate = queryPredicate.And(i =>
                            i.Headline.Contains(model.Query).Boost(50));

答案 1 :(得分:0)

可能最好的方法是根据该字段应用排序,类似于:

Sort sort = new Sort(new SortField("ShowOnTop", SortField.STRING, true), true);
var hits = new SearchHits(context.Searcher.Search(query, sort));

您还可以将其添加为一个大幅提升的可选查询字词,类似于某些内容,并使其余的查询成为必需(整体而言),例如:

ShowOnTop:true^10000 +(the rest of the query)

有足够大的提升因子,除非相关性存在极大的差异,否则这些术语应始终排在第一位。

答案 2 :(得分:0)

最简单的是在/sitecore/system/Settings/Rules/Indexing and Search/...下创建一个过滤ShowOnTop字段的规则(我使用了一个复选框并将值与1进行了比较)并将提升调整为99999999

您可以将此规则添加为全局规则,也可以将其添加为项目规则,并从项目中分配规则。

祝你好运!