-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Description
When creating a SortFieldDescriptor it should be possible to specific default (relevance) and have that ignored when creating a SearchDescriptor, in my specific example, I build up a sort descriptor independently based on a string
private static SortFieldDescriptor<ElasticVideo> GetDocumentSortQuery(ElasticSearchVideoParameters searchParameters)
{
var sortFieldDescriptor = new SortFieldDescriptor<ElasticVideo>();
switch (searchParameters.SortBy)
{
case SearchSortOrder.Relevance:
return null;
case SearchSortOrder.CreatedDateDesc:
sortFieldDescriptor.Descending().OnField("CreatedDate");
break;
case SearchSortOrder.CreatedDateAsc:
sortFieldDescriptor.Ascending().OnField("CreatedDate");
break;
case SearchSortOrder.TitleDesc:
sortFieldDescriptor.Descending().OnField("Title.raw");
break;
case SearchSortOrder.TitleAsc:
sortFieldDescriptor.Ascending().OnField("Title.raw");
break;
case SearchSortOrder.LikesDesc:
sortFieldDescriptor.Descending().OnField("LikesCount");
break;
case SearchSortOrder.LikesAsc:
sortFieldDescriptor.Ascending().OnField("LikesCount");
break;
case SearchSortOrder.DislikesDesc:
sortFieldDescriptor.Descending().OnField("DislikeCount");
break;
case SearchSortOrder.DislikesAsc:
sortFieldDescriptor.Ascending().OnField("DislikeCount");
break;
case SearchSortOrder.ViewsDesc:
sortFieldDescriptor.Descending().OnField("ViewCount");
break;
case SearchSortOrder.ViewsAsc:
sortFieldDescriptor.Ascending().OnField("ViewCount");
break;
}
return sortFieldDescriptor;
}So when it comes to use this built descriptor I have to use an if statement
if (documentSortQuery != null)
searchDescriptor
.AllIndices()
.Type("video")
.Query(documentQuery)
.Sort(x => documentSortQuery)
.Skip(searchParameters.Skip)
.Take(searchParameters.Take);
else
{
searchDescriptor
.AllIndices()
.Type("video")
.Query(documentQuery)
.Skip(searchParameters.Skip)
.Take(searchParameters.Take);
}Not sure if there is a more elegant way. Please let me know if I just have to "deal with it". If you think it's valuable adding this, I wouldn't mind having a crack at a PR.
Metadata
Metadata
Assignees
Labels
No labels