0

我在 sitecore 7.2 中使用 solr seach 的提升项目。我在 Boost Value 中添加了值,然后重建索引,那么如何通过提升值对结果项进行排序?我试过这样:

var dataQuerycontext.GetQueryable<SearchResultItem>()
....
dataQuery = dataQuery.OrderByDescending(i => i["score"]);
var results = dataQuery.GetResults().Hits.Select(h => h.Document);

但它不起作用。似乎商店总是有值是 1

4

1 回答 1

2

将 Sitecore 与 SOLR 一起使用时,索引时间提升似乎不起作用,因为 Sitecore 使用标准查询参数编写查询。为了让查询使用在索引时赋予项目的提升,它需要使用DISMAXorEDISMAX查询。目前,未设置 Sitecore API 来执行此操作。

因此,您必须在查询时进行提升。

此外,您的分数排序不是必需的,结果.GetResults()应该已经按分数排序。如果没有,您应该使用列表的.ScoreHits

var dataQuerycontext.GetQueryable<SearchResultItem>()
    .where(x => (x.MyField == "myvalue").Boost(2f)
    ... more query options ...
    )
....
var results = dataQuery.GetResults().Hits
    .OrderByDescending(h => h.Score).Select(h => h.Document);

然后,这将提升查询中的字段。

于 2016-01-20T13:50:43.437 回答