对于某个模板的项目,我们的用户可以指示该项目应该显示在列表的顶部。
为此,我们在索引“ShowOnTop”中添加了一个字段。
现在,当搜索此模板的项目(构建列表页面)时,我们希望在其他项目之上有效地返回这些“ShowOnTop”项目。
但是,此字段不应影响其他网站搜索(常规搜索)。
我们认为通过对这些文档应用Query-Time Boosting可以实现这一点。但是,我们怎样才能做到这一点?
答案 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
您可以将此规则添加为全局规则,也可以将其添加为项目规则,并从项目中分配规则。
祝你好运!