This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects

Resolve "Relevance Ranking in Metadata"

Merged Philipp Gritsch requested to merge 439-relevance-ranking-in-metadata into development
Viewing commit 8d8b5c90
Show latest version
2 files
+ 26
1
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -7,6 +7,9 @@ import at.ac.uibk.gitsearch.repository.jpa.StatisticsRepository;
import at.ac.uibk.gitsearch.service.dto.AutoCompleteEntry;
import at.ac.uibk.gitsearch.service.dto.StatisticsDTO;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldSort;
import co.elastic.clients.elasticsearch._types.SortOptions;
import co.elastic.clients.elasticsearch._types.SortOrder;
import co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.ExistsQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.MatchPhrasePrefixQuery;
@@ -565,7 +568,13 @@ public class MetaDataRepository {
final BoolQuery query = queryBuilder.build();
// LOGGER.info("ElasticSearch Query using Java Client API:\n{}", query)
co.elastic.clients.elasticsearch.core.SearchResponse<SearchResultDTO> searchResponse = elasticsearchAPIClient.search(
search -> search.index(SearchRepositoryConstants.INDEX_METADATA).query(q -> q.bool(query)).from(from).size(pageSize),
search ->
search
.index(SearchRepositoryConstants.INDEX_METADATA)
.query(q -> q.bool(query))
.sort(getDefaultSortStrategy())
.from(from)
.size(pageSize),
SearchResultDTO.class
);
@@ -583,6 +592,18 @@ public class MetaDataRepository {
}
}
private List<SortOptions> getDefaultSortStrategy() {
return List.of(
getSortOptionForFieldAndOrder(SearchRepositoryConstants.SEARCHSTATISTICS_BADGEREWARDED, SortOrder.Desc),
getSortOptionForFieldAndOrder(SearchRepositoryConstants.SEARCHSTATISTICS_DOWNLOADS, SortOrder.Desc),
getSortOptionForFieldAndOrder(SearchRepositoryConstants.SEARCHSTATISTICS_VIEWS, SortOrder.Desc)
);
}
private SortOptions getSortOptionForFieldAndOrder(String field, SortOrder order) {
return SortOptions.of(sb -> sb.field(FieldSort.of(fb -> fb.field(field).order(order))));
}
/**
* creates the query (builder) for the searchInput and the user authorization
*