Move solr field mappings for data sources && add quotes
This commit is contained in:
parent
716964b78b
commit
a8f3c1dd72
|
@ -67,7 +67,7 @@ public class DataSourceRequest {
|
||||||
private String[] contentTypes;
|
private String[] contentTypes;
|
||||||
|
|
||||||
@Parameter(
|
@Parameter(
|
||||||
description = "Retrieve data sources connected to the organization with OpenAIRE id",
|
description = "Retrieve data sources connected to the organization (with OpenAIRE id)",
|
||||||
array = @ArraySchema(schema = @Schema(type = "string"))
|
array = @ArraySchema(schema = @Schema(type = "string"))
|
||||||
)
|
)
|
||||||
private String[] relOrganizationId;
|
private String[] relOrganizationId;
|
||||||
|
|
|
@ -11,14 +11,10 @@ import java.util.Map;
|
||||||
@Mapper(componentModel = "spring")
|
@Mapper(componentModel = "spring")
|
||||||
public interface DataSourceRequestMapper {
|
public interface DataSourceRequestMapper {
|
||||||
|
|
||||||
Map<String, String> sortFieldMapping = Map.ofEntries(
|
|
||||||
Map.entry("relevance", "score")
|
|
||||||
);
|
|
||||||
|
|
||||||
@Mapping(target = "start", expression = "java( calculateStart(src.getPage(), src.getPageSize()) )")
|
@Mapping(target = "start", expression = "java( calculateStart(src.getPage(), src.getPageSize()) )")
|
||||||
@Mapping(target = "rows", source = "pageSize")
|
@Mapping(target = "rows", source = "pageSize")
|
||||||
@Mapping(target = "debugQuery", source = "debugQuery")
|
@Mapping(target = "debugQuery", source = "debugQuery")
|
||||||
@Mapping(target = "sort", expression = "java( eu.openaire.api.mappers.Utils.formatSortByParam(src.getSortBy(), sortFieldMapping) )")
|
@Mapping(target = "sort", expression = "java( eu.openaire.api.mappers.Utils.formatSortByParam(src.getSortBy(), SolrFieldsMapper.dataSourceSortMapping) )")
|
||||||
SolrQueryParams toSolrQuery(DataSourceRequest src);
|
SolrQueryParams toSolrQuery(DataSourceRequest src);
|
||||||
|
|
||||||
@Named("calculateStart")
|
@Named("calculateStart")
|
||||||
|
@ -29,24 +25,7 @@ public interface DataSourceRequestMapper {
|
||||||
@AfterMapping
|
@AfterMapping
|
||||||
default void paramsCustomMapping(DataSourceRequest src, @MappingTarget SolrQueryParams solrQueryParams) {
|
default void paramsCustomMapping(DataSourceRequest src, @MappingTarget SolrQueryParams solrQueryParams) {
|
||||||
|
|
||||||
final Map<String, String> solrFieldMapping = Map.ofEntries(
|
final Map<String, String> solrFieldMapping = SolrFieldsMapper.dataSourceFieldMapping;
|
||||||
// search field mapping
|
|
||||||
Map.entry("search", "__all:(%s)"),
|
|
||||||
Map.entry("officialName", "datasourceofficialname:(%s)"),
|
|
||||||
Map.entry("englishName", "datasourceenglishname:(%s)"),
|
|
||||||
|
|
||||||
// filter query field mapping
|
|
||||||
Map.entry("id", "__indexrecordidentifier:(%s)"),
|
|
||||||
Map.entry("pid", "pid:(%s)"),
|
|
||||||
Map.entry("subjects", "datasourceodsubjects:(%s)"),
|
|
||||||
Map.entry("dataSourceTypeName", "datasourcetypename:(%s)"),
|
|
||||||
Map.entry("contentTypes", "datasourceodcontenttypes:(%s)"),
|
|
||||||
Map.entry("relOrganizationId", "relorganizationid:(%s)"),
|
|
||||||
|
|
||||||
// filter by related entity fields
|
|
||||||
Map.entry("relCommunityId", "communityid:(%s)"),
|
|
||||||
Map.entry("relCollectedFromDatasourceId", "collectedfromdatasourceid:(%s)")
|
|
||||||
);
|
|
||||||
|
|
||||||
var qList = new ArrayList<String>();
|
var qList = new ArrayList<String>();
|
||||||
|
|
||||||
|
@ -84,7 +63,7 @@ public interface DataSourceRequestMapper {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Utils.isNullOrEmpty(src.getSubjects())) {
|
if (!Utils.isNullOrEmpty(src.getSubjects())) {
|
||||||
fqList.add(String.format(solrFieldMapping.get("subjects"), Utils.escapeAndJoin(src.getSubjects(), "OR", false)));
|
fqList.add(String.format(solrFieldMapping.get("subjects"), Utils.escapeAndJoin(src.getSubjects(), "OR", true)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Utils.isNullOrEmpty(src.getDataSourceTypeName())) {
|
if (!Utils.isNullOrEmpty(src.getDataSourceTypeName())) {
|
||||||
|
@ -92,7 +71,7 @@ public interface DataSourceRequestMapper {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Utils.isNullOrEmpty(src.getContentTypes())) {
|
if (!Utils.isNullOrEmpty(src.getContentTypes())) {
|
||||||
fqList.add(String.format(solrFieldMapping.get("contentTypes"), Utils.escapeAndJoin(src.getContentTypes(), "OR", false)));
|
fqList.add(String.format(solrFieldMapping.get("contentTypes"), Utils.escapeAndJoin(src.getContentTypes(), "OR", true)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// related entity fields
|
// related entity fields
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.util.Map;
|
||||||
|
|
||||||
public class SolrFieldsMapper {
|
public class SolrFieldsMapper {
|
||||||
|
|
||||||
|
// mappings for the organization entity
|
||||||
public static final Map<String, String> organizationFieldsMapping = Map.ofEntries(
|
public static final Map<String, String> organizationFieldsMapping = Map.ofEntries(
|
||||||
// search field mapping
|
// search field mapping
|
||||||
Map.entry("search", "__all:(%s)"),
|
Map.entry("search", "__all:(%s)"),
|
||||||
|
@ -25,5 +26,28 @@ public class SolrFieldsMapper {
|
||||||
Map.entry("relevance", "score")
|
Map.entry("relevance", "score")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// mappings for the datasource entity
|
||||||
|
public static final Map<String, String> dataSourceFieldMapping = Map.ofEntries(
|
||||||
|
// search field mapping
|
||||||
|
Map.entry("search", "__all:(%s)"),
|
||||||
|
Map.entry("officialName", "datasourceofficialname:(%s)"),
|
||||||
|
Map.entry("englishName", "datasourceenglishname:(%s)"),
|
||||||
|
|
||||||
|
// filter query field mapping
|
||||||
|
Map.entry("id", "__indexrecordidentifier:(%s)"),
|
||||||
|
Map.entry("pid", "pid:(%s)"),
|
||||||
|
Map.entry("subjects", "datasourceodsubjects:(%s)"),
|
||||||
|
Map.entry("dataSourceTypeName", "datasourcetypename:(%s)"),
|
||||||
|
Map.entry("contentTypes", "datasourceodcontenttypes:(%s)"),
|
||||||
|
|
||||||
|
// filter by related entity fields
|
||||||
|
Map.entry("relOrganizationId", "relorganizationid:(%s)"),
|
||||||
|
Map.entry("relCommunityId", "communityid:(%s)"),
|
||||||
|
Map.entry("relCollectedFromDatasourceId", "collectedfromdatasourceid:(%s)")
|
||||||
|
);
|
||||||
|
|
||||||
|
public static final Map<String, String> dataSourceSortMapping = Map.ofEntries(
|
||||||
|
Map.entry("relevance", "score")
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue