2016-01-20 5 views
0

Я использую элемент повышения для solr seach в sitecore 7.2. Я добавил значение в значение Boost Value, а затем перестроил индекс, чтобы как я мог сортировать элемент результата, увеличивая значение? Я пытался ул так:Сортировка с Boosting item solr in sitecore v7

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

Но это не работает. Seem store всегда имеет значение 1

ответ

2

При использовании Sitecore с SOLR кажется, что ускорение индекса не работает, потому что Sitecore записывает запросы с использованием стандартного параметра запроса. Чтобы запрос использовал значение boost, указанное для элемента во время индекса, ему необходимо использовать запрос DISMAX или EDISMAX. В настоящее время API Sitecore не настроен для этого.

Таким образом, вам нужно будет увеличить время запроса.

Кроме того, ваш заказ по счету не требуется, результаты от .GetResults() уже заказываются по счету. Если нет, вы должны использовать значение .Score списка Hits.

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 Value в файле sitecore не используется ни в каком месте в solr seach? –

+0

Я считаю, что он может использоваться, когда данные сканируются и индексируются. Но поскольку Sitecore использует стандартный запрос, а не 'DISMAX' или' EDISMAX', значение повышения не используется. См. Это для получения дополнительной информации: https://wiki.apache.org/solr/SolrRelevancyFAQ –

 Смежные вопросы

  • Нет связанных вопросов^_^