2016-01-20 66 views
0

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

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

但它不工作。似乎商店始终有价值是1

回答

2

当与SOLR一起使用Sitecore时,似乎索引时间提升不起作用,因为Sitecore使用标准查询参数编写查询。要查询在索引时间使用给定项目的提升,它需要使用DISMAXEDISMAX查询。目前,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); 

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

+0

所以Boost Sitecore项目中的Value字段不会用在solr搜索的任何地方吗? –

+0

我相信它可能会被用来抓取和索引数据。但是由于Sitecore使用标准查询而不是'DISMAX'或'EDISMAX'查询,因此不使用boost值。有关更多信息,请参阅:https://wiki.apache.org/solr/SolrRelevancyFAQ –

相关问题