Поиск содержимого Sitecore: сгруппируйте элементы, а затем отсортируйте группы (не элементы) по списку значений - PullRequest
0 голосов
/ 24 октября 2018

Мы работаем над поиском контента 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]));
                        }
                    }

Приведенный выше код группирует результаты поиска на основе значения фасета.Но я ожидаю, что эти группы должны быть в той же последовательности, что и фасетные значения.Например, если значения фасета (одного фасета): красный желтый зеленый

, то группа с элементами, помеченными красным, должна быть сверху, затем желтым, а затем зеленым.Я не ищу сортировку, мы хотим сортировку на уровне группы.Является ли это возможным?Пожалуйста, поделитесь предложениями / примером кода?

...