在 sitecore v7 中使用 Boosting item solr 进行排序
Sorting with Boosting item solr in sitecore v7
我在 sitecore 7.2 中使用 solr 搜索的增强项。我在 Boost Value 中添加了值,然后重建索引,那么如何通过提升值对结果项进行排序?
我试过那样 :
var dataQuerycontext.GetQueryable<SearchResultItem>()
....
dataQuery = dataQuery.OrderByDescending(i => i["score"]);
var results = dataQuery.GetResults().Hits.Select(h => h.Document);
但它不起作用。似乎商店的价值总是 1
将 Sitecore 与 SOLR 结合使用时,索引时间提升似乎不起作用,因为 Sitecore 使用标准查询参数编写查询。对于在索引时使用给予项目的提升的查询,它需要使用 DISMAX
或 EDISMAX
查询。目前,Sitecore API 未设置为执行此操作。
因此您必须在查询时进行提升。
此外,不需要按分数排序,.GetResults()
的结果应该已经按分数排序。如果不是,您应该使用 Hits
列表的 .Score
值。
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);
这将增加查询中的字段。
我在 sitecore 7.2 中使用 solr 搜索的增强项。我在 Boost Value 中添加了值,然后重建索引,那么如何通过提升值对结果项进行排序? 我试过那样 :
var dataQuerycontext.GetQueryable<SearchResultItem>()
....
dataQuery = dataQuery.OrderByDescending(i => i["score"]);
var results = dataQuery.GetResults().Hits.Select(h => h.Document);
但它不起作用。似乎商店的价值总是 1
将 Sitecore 与 SOLR 结合使用时,索引时间提升似乎不起作用,因为 Sitecore 使用标准查询参数编写查询。对于在索引时使用给予项目的提升的查询,它需要使用 DISMAX
或 EDISMAX
查询。目前,Sitecore API 未设置为执行此操作。
因此您必须在查询时进行提升。
此外,不需要按分数排序,.GetResults()
的结果应该已经按分数排序。如果不是,您应该使用 Hits
列表的 .Score
值。
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);
这将增加查询中的字段。