2016-01-20 64 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 –

相關問題