Revision 57285
Added by Katerina Iatropoulou over 4 years ago
SearchApiService.java | ||
---|---|---|
49 | 49 |
@DefaultValue("0") @QueryParam("page") final int offset, |
50 | 50 |
@DefaultValue("10") @QueryParam("size") final int limit, |
51 | 51 |
@QueryParam("refine") @DefaultValue("false") final boolean refine, |
52 |
@QueryParam("fields") final List<String> fields, |
|
52 |
@QueryParam("fields") final List<String> refineFields, |
|
53 |
@QueryParam("sf") final List<String> specialFacets, |
|
53 | 54 |
@QueryParam("fq") final List<String> fieldQueries, |
54 | 55 |
@QueryParam("format") final String format, |
55 | 56 |
@QueryParam("type") final String type, |
56 | 57 |
@Context final HttpServletRequest request) { |
57 | 58 |
|
58 |
return getResponseByEntity(query, extractEntity(type), offset, limit, format, request, refine, fields, fieldQueries);
|
|
59 |
return getResponseByEntity(query, extractEntity(type), offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
59 | 60 |
} |
60 | 61 |
|
61 | 62 |
@GET |
... | ... | |
68 | 69 |
@DefaultValue("0") @QueryParam("page") final int offset, |
69 | 70 |
@DefaultValue("10") @QueryParam("size") final int limit, |
70 | 71 |
@QueryParam("refine") @DefaultValue("false") final boolean refine, |
71 |
@QueryParam("fields") final List<String> fields, |
|
72 |
@QueryParam("fields") final List<String> refineFields, |
|
73 |
@QueryParam("sf") final List<String> specialFacets, |
|
72 | 74 |
@QueryParam("fq") final List<String> fieldQueries, |
73 | 75 |
@QueryParam("format") final String format, |
74 | 76 |
@Context final HttpServletRequest request) { |
... | ... | |
77 | 79 |
//TODO do not allow q and keywords both - SWITCH back if needed |
78 | 80 |
//String simpleQuery = buildSimpleSearchQuery(RequestResponseHandler.Entity.PUBLICATION, keywords) ; |
79 | 81 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.PUBLICATION, keywords, doi,sortBy, fieldQueries); |
80 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.PUBLICATION, offset, limit, format, request, refine, fields, fieldQueries);
|
|
82 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.PUBLICATION, offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
81 | 83 |
|
82 | 84 |
} |
83 | 85 |
|
... | ... | |
117 | 119 |
@DefaultValue("0") @QueryParam("page") int offset, |
118 | 120 |
@DefaultValue("10") @QueryParam("size") int limit, |
119 | 121 |
@QueryParam("refine") @DefaultValue("false") boolean refine, |
120 |
@QueryParam("fields") final List<String> fields, |
|
122 |
@QueryParam("fields") final List<String> refineFields, |
|
123 |
@QueryParam("sf") final List<String> specialFacets, |
|
121 | 124 |
@QueryParam("fq") final List<String> fieldQueries, |
122 | 125 |
@QueryParam("format") final String format, |
123 | 126 |
@Context HttpServletRequest request) { |
124 | 127 |
|
125 | 128 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.DATASET, keywords, doi, sortBy, fieldQueries); |
126 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.DATASET, offset, limit, format, request, refine, fields, fieldQueries);
|
|
129 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.DATASET, offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
127 | 130 |
} |
128 | 131 |
|
129 | 132 |
@GET |
... | ... | |
160 | 163 |
@DefaultValue("0") @QueryParam("page") int offset, |
161 | 164 |
@DefaultValue("10") @QueryParam("size") int limit, |
162 | 165 |
@QueryParam("refine") @DefaultValue("false") boolean refine, |
163 |
@QueryParam("fields") final List<String> fields, |
|
166 |
@QueryParam("fields") final List<String> refineFields, |
|
167 |
@QueryParam("sf") final List<String> specialFacets, |
|
164 | 168 |
@QueryParam("fq") final List<String> fieldQueries, |
165 | 169 |
@QueryParam("format") final String format, |
166 | 170 |
@Context HttpServletRequest request) { |
167 | 171 |
|
168 | 172 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.SOFTWARE, keywords, doi, sortBy, fieldQueries); |
169 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.SOFTWARE, offset, limit, format, request, refine, fields, fieldQueries);
|
|
173 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.SOFTWARE, offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
170 | 174 |
} |
171 | 175 |
|
172 | 176 |
@GET |
... | ... | |
202 | 206 |
@DefaultValue("0") @QueryParam("page") int offset, |
203 | 207 |
@DefaultValue("10") @QueryParam("size") int limit, |
204 | 208 |
@QueryParam("refine") @DefaultValue("false") boolean refine, |
205 |
@QueryParam("fields") final List<String> fields, |
|
206 |
@QueryParam("fq") final List<String> fieldQueries, |
|
209 |
@QueryParam("fields") final List<String> refineFields, |
|
210 |
@QueryParam("sf") final List<String> specialFacets, |
|
211 |
@QueryParam("fq") final List<String> fieldQueries, |
|
207 | 212 |
@QueryParam("format") final String format, |
208 | 213 |
@Context HttpServletRequest request) { |
209 | 214 |
|
210 | 215 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.OTHER, keywords, doi, sortBy, fieldQueries); |
211 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.OTHER, offset, limit, format, request, refine, fields, fieldQueries);
|
|
216 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.OTHER, offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
212 | 217 |
} |
213 | 218 |
|
214 | 219 |
@GET |
... | ... | |
241 | 246 |
@DefaultValue("0") @QueryParam("page") int offset, |
242 | 247 |
@DefaultValue("10") @QueryParam("size") int limit, |
243 | 248 |
@QueryParam("refine") @DefaultValue("false") boolean refine, |
244 |
@QueryParam("fields") final List<String> fields, |
|
249 |
@QueryParam("fields") final List<String> refineFields, |
|
250 |
@QueryParam("sf") final List<String> specialFacets, |
|
245 | 251 |
@QueryParam("fq") final List<String> fieldQueries, |
246 | 252 |
@QueryParam("format") final String format, |
247 | 253 |
@Context HttpServletRequest request) { |
248 | 254 |
|
249 | 255 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.PROJECT, keywords, fieldQueries); |
250 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.PROJECT, offset, limit, format, request, refine, fields, fieldQueries);
|
|
256 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.PROJECT, offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
251 | 257 |
} |
252 | 258 |
|
253 | 259 |
|
... | ... | |
286 | 292 |
@Context HttpServletRequest request) { |
287 | 293 |
|
288 | 294 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.PUBLICATION, "relprojectid", projectId, fieldQueries); |
289 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.PUBLICATION, offset, limit, format, request, false, null, fieldQueries); |
|
295 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.PUBLICATION, offset, limit, format, request, false, null, null,fieldQueries);
|
|
290 | 296 |
} |
291 | 297 |
|
292 | 298 |
@GET |
... | ... | |
313 | 319 |
@Context HttpServletRequest request) { |
314 | 320 |
|
315 | 321 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.DATASET, "relprojectid", projectId, fieldQueries); |
316 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.DATASET, offset, limit, format, request, false, null, fieldQueries); |
|
322 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.DATASET, offset, limit, format, request, false, null, null, fieldQueries);
|
|
317 | 323 |
} |
318 | 324 |
|
319 | 325 |
|
... | ... | |
359 | 365 |
@Context HttpServletRequest request) { |
360 | 366 |
|
361 | 367 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.SOFTWARE, "relprojectid", projectId, fieldQueries); |
362 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.SOFTWARE, offset, limit, format, request, false, null, fieldQueries); |
|
368 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.SOFTWARE, offset, limit, format, request, false, null, null,fieldQueries);
|
|
363 | 369 |
} |
364 | 370 |
|
365 | 371 |
@GET |
... | ... | |
388 | 394 |
@Context HttpServletRequest request) { |
389 | 395 |
|
390 | 396 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.OTHER, "relprojectid", projectId, fieldQueries); |
391 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.OTHER, offset, limit, format, request, false, null, fieldQueries); |
|
397 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.OTHER, offset, limit, format, request, false, null, null, fieldQueries);
|
|
392 | 398 |
} |
393 | 399 |
|
394 | 400 |
@GET |
... | ... | |
399 | 405 |
@DefaultValue("0") @QueryParam("page") final int offset, |
400 | 406 |
@DefaultValue("10") @QueryParam("size") final int limit, |
401 | 407 |
@QueryParam("refine") @DefaultValue("false") final boolean refine, |
402 |
@QueryParam("fields") final List<String> fields,
|
|
408 |
@QueryParam("fields") final List<String> refineFields,
|
|
403 | 409 |
@QueryParam("fq") final List<String> fieldQueries, |
410 |
@QueryParam("sf") final List<String> specialFacets, |
|
404 | 411 |
@QueryParam("format") final String format, |
405 | 412 |
@Context final HttpServletRequest request) { |
406 | 413 |
|
407 | 414 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.DATASOURCE, keywords, fieldQueries); |
408 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.DATASOURCE, offset, limit, format, request, refine, fields, fieldQueries);
|
|
415 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.DATASOURCE, offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
409 | 416 |
} |
410 | 417 |
|
411 | 418 |
@GET |
... | ... | |
440 | 447 |
@DefaultValue("0") @QueryParam("page") final int offset, |
441 | 448 |
@DefaultValue("10") @QueryParam("size") final int limit, |
442 | 449 |
@QueryParam("refine") @DefaultValue("false") final boolean refine, |
443 |
@QueryParam("fields") final List<String> fields, |
|
450 |
@QueryParam("fields") final List<String> refineFields, |
|
451 |
@QueryParam("sf") final List<String> specialFacets, |
|
444 | 452 |
@QueryParam("fq") final List<String> fieldQueries, |
445 | 453 |
@QueryParam("format") final String format, |
446 | 454 |
@Context final HttpServletRequest request) { |
447 | 455 |
|
448 | 456 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.ORGANIZATION, keywords, fieldQueries); |
449 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.ORGANIZATION, offset, limit, format, request, refine, fields, fieldQueries);
|
|
457 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.ORGANIZATION, offset, limit, format, request, refine, refineFields, specialFacets, fieldQueries);
|
|
450 | 458 |
} |
451 | 459 |
|
452 | 460 |
|
... | ... | |
485 | 493 |
@QueryParam("fq") final List<String> fieldQueries, |
486 | 494 |
@Context HttpServletRequest request) { |
487 | 495 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.DATASOURCE, "relorganizationid", organizationid, fieldQueries); |
488 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.DATASOURCE, offset, limit, format, request, false, null, fieldQueries); |
|
496 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.DATASOURCE, offset, limit, format, request, false, null, null, fieldQueries);
|
|
489 | 497 |
} |
490 | 498 |
|
491 | 499 |
@GET |
... | ... | |
512 | 520 |
@QueryParam("fq") final List<String> fieldQueries, |
513 | 521 |
@Context HttpServletRequest request) { |
514 | 522 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.PUBLICATION, "relorganizationid", organizationid, fieldQueries); |
515 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.PUBLICATION, offset, limit, format, request, false, null, fieldQueries); |
|
523 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.PUBLICATION, offset, limit, format, request, false, null, null, fieldQueries);
|
|
516 | 524 |
} |
517 | 525 |
|
518 | 526 |
@GET |
... | ... | |
540 | 548 |
@QueryParam("fq") final List<String> fieldQueries, |
541 | 549 |
@Context HttpServletRequest request) { |
542 | 550 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.DATASET, "relorganizationid", organizationid, fieldQueries); |
543 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.DATASET, offset, limit, format, request, false, null, fieldQueries); |
|
551 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.DATASET, offset, limit, format, request, false, null, null,fieldQueries);
|
|
544 | 552 |
} |
545 | 553 |
|
546 | 554 |
@GET |
... | ... | |
568 | 576 |
@QueryParam("fq") final List<String> fieldQueries, |
569 | 577 |
@Context HttpServletRequest request) { |
570 | 578 |
String fullQuery = builtEntity2EntityRelationQuery(RequestResponseHandler.Entity.PROJECT, "relorganizationid", organizationid, fieldQueries); |
571 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.PROJECT, offset, limit, format, request, false, null, fieldQueries); |
|
579 |
return getResponseByEntity(fullQuery, RequestResponseHandler.Entity.PROJECT, offset, limit, format, request, false, null, null, fieldQueries);
|
|
572 | 580 |
} |
573 | 581 |
|
574 | 582 |
@GET |
... | ... | |
592 | 600 |
@DefaultValue("0") @QueryParam("page") final int offset, |
593 | 601 |
@DefaultValue("10") @QueryParam("size") final int limit, |
594 | 602 |
@QueryParam("refine") @DefaultValue("false") final boolean refine, |
595 |
@QueryParam("fields") final List<String> fields,
|
|
603 |
@QueryParam("fields") final List<String> refineFields,
|
|
596 | 604 |
@QueryParam("fq") final List<String> fieldQueries, |
597 | 605 |
@QueryParam("format") final String format, |
598 | 606 |
@Context final HttpServletRequest request) { |
599 | 607 |
|
600 | 608 |
String simpleQuery = buildSearchRequest(RequestResponseHandler.Entity.PERSON, keywords, fieldQueries); |
601 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.PERSON, offset, limit, format, request, refine, fields, fieldQueries);
|
|
609 |
return getResponseByEntity(simpleQuery, RequestResponseHandler.Entity.PERSON, offset, limit, format, request, refine, refineFields, fieldQueries);
|
|
602 | 610 |
} |
603 | 611 |
|
604 | 612 |
|
... | ... | |
679 | 687 |
@Timed(value = "http.server.request.duration", extraTags = {"referer", "portal", "uri", "/rest/v2/api/reports"}, longTask = false) |
680 | 688 |
public Response fetchReport(@QueryParam("q") String keywords, |
681 | 689 |
@QueryParam("refine") @DefaultValue("false") boolean refine, |
682 |
@QueryParam("fields") final List<String> fields,
|
|
690 |
@QueryParam("fields") final List<String> refineFields,
|
|
683 | 691 |
@QueryParam("fq") final List<String> fieldQueries, |
684 | 692 |
@QueryParam("type") final String type, |
685 | 693 |
@QueryParam("format") final String format, |
... | ... | |
703 | 711 |
logger.debug("fieldQueries " + fieldQueries); |
704 | 712 |
|
705 | 713 |
try { |
706 |
SearchResult sr = ((SearchServiceImpl)searchService).newSearch(fullQuery, Locale.getDefault().toString(), fields, fieldQueries,0, 0, format, transformer,null,false);
|
|
714 |
SearchResult sr = ((SearchServiceImpl)searchService).newSearch(fullQuery, Locale.getDefault().toString(), refineFields, null, fieldQueries,0, 0, format, transformer,null,false);
|
|
707 | 715 |
logger.debug("Total number of results " + sr.getTotal()); |
708 | 716 |
|
709 | 717 |
|
... | ... | |
720 | 728 |
os.write(CSVResponseFormat.appendTitle(entity, special).getBytes()); |
721 | 729 |
} |
722 | 730 |
try { |
723 |
((SearchServiceImpl)searchService).cursorSearch(fullQuery, fields, fieldQueries, format, transformer, os);
|
|
731 |
((SearchServiceImpl)searchService).cursorSearch(fullQuery, refineFields, null, fieldQueries, format, transformer, os);
|
|
724 | 732 |
|
725 | 733 |
} catch (SearchServiceException sse) { |
726 | 734 |
os.write(("Fail to return report. " + sse.getMessage()).getBytes()); |
... | ... | |
946 | 954 |
String responseFormat = extractResponseFormat(format); |
947 | 955 |
|
948 | 956 |
try { |
949 |
SearchResult searchResult = ((SearchServiceImpl)searchService).newSearch(query, Locale.getDefault().toString(), null, fieldQueries, 0, 0, responseFormat, null, null, false); |
|
957 |
SearchResult searchResult = ((SearchServiceImpl)searchService).newSearch(query, Locale.getDefault().toString(), null, null, fieldQueries, 0, 0, responseFormat, null, null, false);
|
|
950 | 958 |
return Response.status(Response.Status.OK).entity(APIResponseFormatter.createCountMeta(request, query, searchResult.getTotal(), responseFormat)).type(responseFormat).build(); |
951 | 959 |
|
952 | 960 |
} catch (SearchServiceException sse) { |
... | ... | |
968 | 976 |
type(responseType).build(); |
969 | 977 |
} |
970 | 978 |
|
971 |
SearchResult searchResult = ((SearchServiceImpl)searchService).newSearch(fullQuery, Locale.getDefault().toString(), null, fieldQueries, 0, 1, responseType, null, null, false); |
|
979 |
SearchResult searchResult = ((SearchServiceImpl)searchService).newSearch(fullQuery, Locale.getDefault().toString(), null, null, fieldQueries, 0, 1, responseType, null, null, false);
|
|
972 | 980 |
|
973 | 981 |
if (searchResult.getSearchResults() == null || searchResult.getSearchResults().isEmpty() || |
974 | 982 |
searchResult.getSearchResults().size() == 0 || searchResult.getSearchResults().get(0) == null) { |
... | ... | |
984 | 992 |
} |
985 | 993 |
} |
986 | 994 |
|
987 |
private Response getResponseByEntity(String fullQuery, RequestResponseHandler.Entity entity, int offset, int limit, String format, HttpServletRequest request, boolean refine, List<String> refineFields, List<String> fieldQueries) { |
|
995 |
private Response getResponseByEntity(String fullQuery, RequestResponseHandler.Entity entity, int offset, int limit, String format, HttpServletRequest request, boolean refine, List<String> refineFields, List<String> specialFacets, List<String> fieldQueries) {
|
|
988 | 996 |
long startTime = System.nanoTime(); |
989 | 997 |
Transformer transformer = extractTransformer(format, entity); |
990 | 998 |
boolean special = isSpecialFormat(format); |
... | ... | |
998 | 1006 |
} |
999 | 1007 |
|
1000 | 1008 |
try { |
1001 |
SearchResult solrResults = ((SearchServiceImpl)searchService).newSearch(fullQuery, Locale.getDefault().toString(), refineFields, fieldQueries, offset, limit, responseType, transformer, null, false); |
|
1009 |
SearchResult solrResults = ((SearchServiceImpl)searchService).newSearch(fullQuery, Locale.getDefault().toString(), refineFields, specialFacets, fieldQueries, offset, limit, responseType, transformer, null, false);
|
|
1002 | 1010 |
long estimatedTime = System.nanoTime() - startTime; |
1003 | 1011 |
logger.debug("Publications search time " + estimatedTime/1000000 + " milliseconds"); |
1004 | 1012 |
return Response.status(Response.Status.OK).entity(APIResponseFormatter.createEntitiesResponse(request, entity, fullQuery, fieldQueries, solrResults, refine, responseType, special, hasTitle)).type(responseType).build(); |
... | ... | |
1107 | 1115 |
type(responseType).build(); |
1108 | 1116 |
} |
1109 | 1117 |
|
1110 |
SearchResult searchResults = ((SearchServiceImpl)searchService).newSearchWithoutFieldQueries(fullQuery, Locale.getDefault().toString(), null, fieldQueries, 0, limit, responseType, null, null, false); |
|
1118 |
SearchResult searchResults = ((SearchServiceImpl)searchService).newSearchWithoutFieldQueries(fullQuery, Locale.getDefault().toString(), null, null, fieldQueries, 0, limit, responseType, null, null, false);
|
|
1111 | 1119 |
|
1112 | 1120 |
if (searchResults.getSearchResults() == null || searchResults.getSearchResults().isEmpty() || |
1113 | 1121 |
searchResults.getSearchResults().size() == 0 || searchResults.getSearchResults().get(0) == null) { |
Also available in: Unified diff
return facets with more than the default 100 value