Мы работаем над поиском контента Sitecore Solr.У меня есть список значений фасета, и мы группируем элементы на его основе.Ниже приведен код:
internal SearchQuery ConvertFacetsToSearchQuery(TripSearchPost facets)
{
IEnumerable<SearchFacet> searchFacets;
if (facets == null || facets.Selected == null)
{
searchFacets = Enumerable.Empty<SearchFacet>();
}
else
{
searchFacets = facets.Selected
.GroupBy(f => f.Facet)
.Select(g => new SearchFacet(g.Key, g.Select(i => i.Value)));
}
var query = new SearchQuery()
{
Facets = searchFacets,
Text = facets?.Query
};
if (facets?.DateFrom != null || facets?.DateTo != null)
{
query.DepartureInterval = new DateTimeInterval(facets?.DateFrom, facets?.DateTo);
}
return query;
}
Поисковый запрос для поиска:
foreach (var f in request.Query.Facets)
{
query = query.FacetOn(i => i[f.Key]);
if (f.Values.Count() > 0)
{
query = query.Where(i => f.Values.Contains(i[f.Key]));
}
}
Приведенный выше код группирует результаты поиска на основе значения фасета.Но я ожидаю, что эти группы должны быть в той же последовательности, что и фасетные значения.Например, если значения фасета (одного фасета): красный желтый зеленый
, то группа с элементами, помеченными красным, должна быть сверху, затем желтым, а затем зеленым.Я не ищу сортировку, мы хотим сортировку на уровне группы.Является ли это возможным?Пожалуйста, поделитесь предложениями / примером кода?