1

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

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

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

但是,此字段不应影响其他站点搜索(一般搜索)。

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

4

3 回答 3

1

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

var queryPredicate = PredicateBuilder.True<SearchResult>();
queryPredicate = queryPredicate.And(i =>
                            i.Headline.Contains(model.Query).Boost(50));
于 2014-11-16T06:07:32.560 回答
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)

有了足够大的提升因子,除非相关性有很大差异,否则这些术语应该总是首先出现。

于 2013-10-07T16:32:48.343 回答
0

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

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

祝你好运!

于 2014-11-14T21:00:56.407 回答