Skip to content

Commit 40e5413

Browse files
authored
SAK-47754 search: let colon containing searches be parsed fully (sakaiproject#10838)
https://sakaiproject.atlassian.net/browse/SAK-47754
1 parent 8283e29 commit 40e5413

File tree

13 files changed

+82
-75
lines changed

13 files changed

+82
-75
lines changed

portal/portal-impl/impl/src/java/org/sakaiproject/portal/entityprovider/PortalEntityProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ public ActionReturn searchForConnections(Map<String, Object> params) {
239239
workspaceIds.forEach(id -> log.debug("workspace id: {}", id));
240240
}
241241

242-
SearchList results = searchService.search(query, workspaceIds, 0, 100);
242+
SearchList results = searchService.search(query, workspaceIds, null, 0, 100);
243243

244244
Set<BasicConnection> hits = results.stream().filter(r -> "profile".equals(r.getTool()))
245245
.map(r ->

rwiki/rwiki-tool/tool/src/java/uk/ac/cam/caret/sakai/rwiki/tool/bean/FullSearchBean.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public List search()
197197
int searchStart = requestPage * pagesize;
198198
int searchEnd = searchStart + pagesize;
199199
try {
200-
searchResults = searchService.search(search.concat(SEARCH_SUFFIX), l, searchStart,
200+
searchResults = searchService.search(search.concat(SEARCH_SUFFIX), l, null, searchStart,
201201
searchEnd);
202202
long end = System.currentTimeMillis();
203203
timeTaken = end - start;

samigo/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/SearchQuestionBean.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public void searchQuestionsByTag (String[] tagList, boolean andOption){
150150

151151
try {
152152

153-
SearchResponse sr = searchService.searchResponse("", null, 0, 0, "questions",additionalSearchInformation);
153+
SearchResponse sr = searchService.searchResponse("", null, null, 0, 0, "questions",additionalSearchInformation);
154154
log.debug("This is the search response: " + sr.toString());
155155
Terms dedup = sr.getAggregations().get("dedup");
156156

@@ -219,7 +219,7 @@ public void searchQuestionsByText (boolean andOption){
219219
this.setTextToSearch(textToSearch);
220220

221221
try {
222-
SearchResponse sr = searchService.searchResponse(textToSearch, null, 0, 0, "questions", additionalSearchInformation);
222+
SearchResponse sr = searchService.searchResponse(textToSearch, null, null, 0, 0, "questions", additionalSearchInformation);
223223
log.debug("This is the search repsonse: " + sr.toString());
224224
Terms dedup = sr.getAggregations().get("dedup");
225225
// For each entry
@@ -349,7 +349,7 @@ public boolean userOwns(String questionId){
349349

350350
try {
351351

352-
SearchResponse sr = searchService.searchResponse("", null, 0, 1, "questions", additionalSearchInformation);
352+
SearchResponse sr = searchService.searchResponse("", null, null, 0, 1, "questions", additionalSearchInformation);
353353
if (sr.getHits().getTotalHits().value < 1) {
354354
questionsIOwn.put(questionId, Boolean.FALSE);
355355
return false;
@@ -376,7 +376,7 @@ public List<String> originFull(String hash){
376376
additionalSearchInformation.put("hash",hash);
377377
try {
378378

379-
SearchResponse sr = searchService.searchResponse("", null, 0, 1000, "questions", additionalSearchInformation);
379+
SearchResponse sr = searchService.searchResponse("", null, null, 0, 1000, "questions", additionalSearchInformation);
380380

381381
for (SearchHit hit : sr.getHits()) {
382382
origins.add(origin(hit));

samigo/samigo-impl/src/java/org/sakaiproject/samigo/search/QuestionElasticSearchIndexBuilder.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -799,16 +799,16 @@ protected void indexAdd(String resourceName, EntityContentProducer ecp) {
799799

800800

801801
@Override
802-
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, int start, int end) {
803-
return search(searchTerms,references, siteIds, start, end, new HashMap<>());
802+
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end) {
803+
return search(searchTerms,references, siteIds, toolIds, start, end, new HashMap<>());
804804
}
805805

806806
/**
807807
* This is a new search that accepts additionalSearchInformation. We need it for our complex question searches.
808808
* We have duplicated the methods that need this parameter, like prepareSearchRequest
809809
*/
810-
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, int start, int end, Map<String,String> additionalSearchInformation) {
811-
SearchRequest searchRequest = prepareSearchRequest(searchTerms, references, siteIds, start, end, additionalSearchInformation);
810+
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end, Map<String,String> additionalSearchInformation) {
811+
SearchRequest searchRequest = prepareSearchRequest(searchTerms, references, siteIds, toolIds, start, end, additionalSearchInformation);
812812
log.debug("Search request from index builder [{}]: {}", getName(), searchRequest.toString());
813813
ValidateQueryRequest validateQueryRequest = new ValidateQueryRequest(indexName);
814814
validateQueryRequest.query(searchRequest.source().query());
@@ -839,14 +839,14 @@ public SearchResponse search(String searchTerms, List<String> references, List<S
839839
}
840840

841841
@Override
842-
protected SearchRequest prepareSearchRequest(String searchTerms, List<String> references, List<String> siteIds, int start, int end) {
843-
return prepareSearchRequest(searchTerms,references, siteIds, start, end, new HashMap<>());
842+
protected SearchRequest prepareSearchRequest(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end) {
843+
return prepareSearchRequest(searchTerms,references, siteIds, toolIds, start, end, new HashMap<>());
844844
}
845845

846-
protected SearchRequest prepareSearchRequest(String searchTerms, List<String> references, List<String> siteIds, int start, int end, Map<String,String> additionalSearchInformation) {
846+
protected SearchRequest prepareSearchRequest(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end, Map<String,String> additionalSearchInformation) {
847847
SearchRequest searchRequest = newSearchRequestAndQueryBuilders(searchTerms, references, siteIds);
848848
addSearchCoreParams(searchRequest);
849-
addSearchQuery(searchRequest, searchTerms, references, siteIds, additionalSearchInformation);
849+
addSearchQuery(searchRequest, searchTerms, references, siteIds, toolIds, additionalSearchInformation);
850850
addSearchResultFields(searchRequest);
851851
addSearchPagination(searchRequest, start, end);
852852
addSearchFacetting(searchRequest);
@@ -866,11 +866,11 @@ protected void addSearchCoreParams(SearchRequest searchRequest) {
866866
}
867867

868868
@Override
869-
protected void addSearchQuery(SearchRequest searchRequest, String searchTerms, List<String> references, List<String> siteIds) {
870-
addSearchQuery(searchRequest, searchTerms, references, siteIds, new HashMap<>());
869+
protected void addSearchQuery(SearchRequest searchRequest, String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds) {
870+
addSearchQuery(searchRequest, searchTerms, references, siteIds, toolIds, new HashMap<>());
871871
}
872872

873-
protected void addSearchQuery(SearchRequest searchRequest, String searchTerms, List<String> references, List<String> siteIds, Map<String,String> additionalSearchInformation ) {
873+
protected void addSearchQuery(SearchRequest searchRequest, String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, Map<String,String> additionalSearchInformation ) {
874874
addSearchTerms(searchRequest, searchTerms, additionalSearchInformation);
875875
addSearchReferences(searchRequest, references);
876876
addSearchSiteIds(searchRequest, siteIds);

search/elasticsearch/api/src/java/org/sakaiproject/search/elasticsearch/ElasticSearchIndexBuilder.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ public interface ElasticSearchIndexBuilder extends SearchIndexBuilder {
3939

4040
String getEventResourceFilter();
4141

42-
SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, int start, int end);
42+
SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end);
4343

4444
// response type is different from search to match historical behavior (and is actually easier to
4545
// keep the SearchResponse processing inside the index builder b/c it means we don't have to
4646
// expose any impl details like the searched on field name
4747

48-
SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, int start, int end, Map<String,String> additionalSearchInformation);
48+
SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end, Map<String,String> additionalSearchInformation);
4949

5050
String[] searchSuggestions(String searchString, String currentSite, boolean allMySites);
5151

search/elasticsearch/impl/src/java/org/sakaiproject/search/elasticsearch/ElasticSearchList.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public ElasticSearchList(String searchTerms, SearchResponse response, ElasticSea
5959

6060
SearchResponse highlightedResponse;
6161
try {
62-
highlightedResponse = elasticSearchService.search(searchTerms, new ArrayList<>(), 0, references.size(), references, searchIndexBuilder.getName());
62+
highlightedResponse = elasticSearchService.search(searchTerms, new ArrayList<>(), new ArrayList(), 0, references.size(), references, searchIndexBuilder.getName());
6363
} catch (Exception e) {
6464
log.error("problem running hightlighted and facetted search: {}", e);
6565
return;

search/elasticsearch/impl/src/java/org/sakaiproject/search/elasticsearch/ElasticSearchService.java

+20-20
Original file line numberDiff line numberDiff line change
@@ -408,46 +408,46 @@ private void registerNoDuplicates(String function, NotificationEdit notification
408408
}
409409

410410
@Override
411-
public SearchList search(String searchTerms, List<String> siteIds, int start, int end, String filterName, String sorterName) throws InvalidSearchQueryException {
412-
return search(searchTerms, siteIds, start, end);
411+
public SearchList search(String searchTerms, List<String> siteIds, List<String> toolIds, int start, int end, String filterName, String sorterName) throws InvalidSearchQueryException {
412+
return search(searchTerms, siteIds, toolIds, start, end);
413413
}
414414

415415
@Override
416-
public SearchList search(String searchTerms, List<String> siteIds, int searchStart, int searchEnd) throws InvalidSearchQueryException {
416+
public SearchList search(String searchTerms, List<String> siteIds, List<String> toolIds, int searchStart, int searchEnd) throws InvalidSearchQueryException {
417417
Pair<SearchResponse, ElasticSearchIndexBuilder> result =
418-
search(searchTerms, null, siteIds, searchStart, searchEnd, null, null, new ArrayList<>());
418+
search(searchTerms, null, siteIds, toolIds, searchStart, searchEnd, null, null, new ArrayList<>());
419419
return new ElasticSearchList(searchTerms.toLowerCase(), result.getLeft(), this, result.getRight(),
420420
result.getRight().getFacetName(), result.getRight().getFilter());
421421
}
422422

423423
@Override
424-
public SearchList search(String searchTerms, List<String> siteIds, int searchStart, int searchEnd, String indexBuilderName) throws InvalidSearchQueryException {
424+
public SearchList search(String searchTerms, List<String> siteIds, List<String> toolIds, int searchStart, int searchEnd, String indexBuilderName) throws InvalidSearchQueryException {
425425
Pair<SearchResponse, ElasticSearchIndexBuilder> result =
426-
search(searchTerms, indexBuilderName, siteIds, searchStart, searchEnd, null, null, new ArrayList<>());
426+
search(searchTerms, indexBuilderName, siteIds, toolIds, searchStart, searchEnd, null, null, new ArrayList<>());
427427
return new ElasticSearchList(searchTerms.toLowerCase(), result.getLeft(), this, result.getRight(),
428428
result.getRight().getFacetName(), result.getRight().getFilter());
429429
}
430430

431431
@Override
432-
public SearchList search(String searchTerms, List<String> siteIds, int searchStart, int searchEnd, String indexBuilderName, Map<String,String> additionalSearchInformation) throws InvalidSearchQueryException {
432+
public SearchList search(String searchTerms, List<String> siteIds, List<String> toolIds, int searchStart, int searchEnd, String indexBuilderName, Map<String,String> additionalSearchInformation) throws InvalidSearchQueryException {
433433
Pair<SearchResponse, ElasticSearchIndexBuilder> result =
434-
search(searchTerms, indexBuilderName, siteIds, searchStart, searchEnd, null, null, new ArrayList<>(),additionalSearchInformation);
434+
search(searchTerms, indexBuilderName, siteIds, toolIds, searchStart, searchEnd, null, null, new ArrayList<>(),additionalSearchInformation);
435435
return new ElasticSearchList(searchTerms.toLowerCase(), result.getLeft(), this, result.getRight(),
436436
result.getRight().getFacetName(), result.getRight().getFilter());
437437
}
438438

439439
@Override
440-
public SearchResponse searchResponse(String searchTerms, List<String> siteIds, int searchStart, int searchEnd, String indexBuilderName, Map<String,String> additionalSearchInformation) throws InvalidSearchQueryException {
440+
public SearchResponse searchResponse(String searchTerms, List<String> siteIds, List<String> toolIds, int searchStart, int searchEnd, String indexBuilderName, Map<String,String> additionalSearchInformation) throws InvalidSearchQueryException {
441441
Pair<SearchResponse, ElasticSearchIndexBuilder> result =
442-
search(searchTerms, indexBuilderName, siteIds, searchStart, searchEnd, null, null, new ArrayList<>(),additionalSearchInformation);
442+
search(searchTerms, indexBuilderName, siteIds, toolIds, searchStart, searchEnd, null, null, new ArrayList<>(),additionalSearchInformation);
443443
return result.getLeft();
444444
}
445445

446-
SearchResponse search(String searchTerms, List<String> siteIds, int start, int end, List<String> references,String indexBuilderName) throws InvalidSearchQueryException {
447-
return search(searchTerms, indexBuilderName, siteIds, start, end, null, null, references).getLeft();
446+
SearchResponse search(String searchTerms, List<String> siteIds, List<String> toolIds, int start, int end, List<String> references,String indexBuilderName) throws InvalidSearchQueryException {
447+
return search(searchTerms, indexBuilderName, siteIds, toolIds, start, end, null, null, references).getLeft();
448448
}
449449

450-
Pair<SearchResponse, ElasticSearchIndexBuilder> search(String searchTerms, String indexBuilderName, List<String> siteIds, int start, int end, String filterName, String sorterName, List<String> references) throws InvalidSearchQueryException {
450+
Pair<SearchResponse, ElasticSearchIndexBuilder> search(String searchTerms, String indexBuilderName, List<String> siteIds, List<String> toolIds, int start, int end, String filterName, String sorterName, List<String> references) throws InvalidSearchQueryException {
451451
if (references == null) {
452452
references = new ArrayList();
453453
}
@@ -456,11 +456,11 @@ Pair<SearchResponse, ElasticSearchIndexBuilder> search(String searchTerms, Strin
456456
}
457457

458458
ElasticSearchIndexBuilder indexBuilder = indexBuilderByNameOrDefault(indexBuilderName);
459-
SearchResponse response = indexBuilder.search(searchTerms, references, siteIds, start, end);
459+
SearchResponse response = indexBuilder.search(searchTerms, references, siteIds, toolIds, start, end);
460460
return new ImmutablePair<>(response, indexBuilder);
461461
}
462462

463-
Pair<SearchResponse, ElasticSearchIndexBuilder> search(String searchTerms, String indexBuilderName, List<String> siteIds, int start, int end, String filterName, String sorterName, List<String> references, Map<String,String> additionalSearchInformation) throws InvalidSearchQueryException {
463+
Pair<SearchResponse, ElasticSearchIndexBuilder> search(String searchTerms, String indexBuilderName, List<String> siteIds, List<String> toolIds, int start, int end, String filterName, String sorterName, List<String> references, Map<String,String> additionalSearchInformation) throws InvalidSearchQueryException {
464464
if (references == null) {
465465
references = new ArrayList();
466466
}
@@ -469,7 +469,7 @@ Pair<SearchResponse, ElasticSearchIndexBuilder> search(String searchTerms, Strin
469469
}
470470

471471
ElasticSearchIndexBuilder indexBuilder = indexBuilderByNameOrDefault(indexBuilderName);
472-
SearchResponse response = indexBuilder.search(searchTerms, references, siteIds, start, end, additionalSearchInformation);
472+
SearchResponse response = indexBuilder.search(searchTerms, references, siteIds, toolIds, start, end, additionalSearchInformation);
473473
return new ImmutablePair<>(response, indexBuilder);
474474
}
475475

@@ -558,7 +558,7 @@ public String searchXML(Map parameterMap) {
558558
sessionManager.setCurrentSession(s);
559559
try {
560560

561-
SearchList sl = search(searchTerms, ctx, searchStart, searchEnd);
561+
SearchList sl = search(searchTerms, ctx, null, searchStart, searchEnd);
562562
sb.append("<results "); //$NON-NLS-1$
563563
sb.append(" fullsize=\"").append(sl.getFullSize()) //$NON-NLS-1$
564564
.append("\" "); //$NON-NLS-1$
@@ -987,12 +987,12 @@ public String getEventResourceFilter() {
987987
}
988988

989989
@Override
990-
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, int start, int end) {
991-
return search(searchTerms,references,siteIds,start,end, new HashMap<String,String>());
990+
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end) {
991+
return search(searchTerms,references,siteIds,toolIds,start,end, new HashMap<String,String>());
992992
}
993993

994994
@Override
995-
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, int start, int end, Map<String,String> additionalSearchInfromation) {
995+
public SearchResponse search(String searchTerms, List<String> references, List<String> siteIds, List<String> toolIds, int start, int end, Map<String,String> additionalSearchInfromation) {
996996
return new SearchResponse(
997997
new InternalSearchResponse(new SearchHits(new SearchHit[0], new TotalHits(0, TotalHits.Relation.EQUAL_TO), 0.0f), InternalAggregations.EMPTY, new Suggest(Collections.emptyList()), null, false, false, 1),
998998
"no-op",

search/elasticsearch/impl/src/test/org/sakaiproject/search/elasticsearch/ElasticSearchTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ public void deleteDoc(){
386386
elasticSearchIndexBuilder.refreshIndex();
387387
assertTrue(elasticSearchService.getNDocs() == 0);
388388
try {
389-
SearchList list = elasticSearchService.search("asdf", siteIds, 0, 10);
389+
SearchList list = elasticSearchService.search("asdf", siteIds, null, 0, 10);
390390
assertFalse(list.size() > 0 );
391391
} catch (InvalidSearchQueryException e) {
392392
log.error(e.getMessage(), e);
@@ -403,7 +403,7 @@ public void deleteAllDocumentForSite(){
403403
elasticSearchIndexBuilder.deleteAllDocumentForSite(siteId);
404404

405405
try {
406-
SearchList list = elasticSearchService.search("asdf", siteIds, 0, 10);
406+
SearchList list = elasticSearchService.search("asdf", siteIds, null, 0, 10);
407407
assertFalse(list.size() > 0);
408408
} catch (InvalidSearchQueryException e) {
409409
log.error(e.getMessage(), e);
@@ -427,15 +427,15 @@ public void testSearch() {
427427
elasticSearchIndexBuilder.refreshIndex();
428428

429429
try {
430-
SearchList list = elasticSearchService.search("asdf", siteIds, 0, 10);
430+
SearchList list = elasticSearchService.search("asdf", siteIds, null, 0, 10);
431431
assertNotEquals(0, list.size());
432432
SearchResult result = list.get(0);
433433
assertNotNull(result);
434434
assertEquals(result.getReference(), resourceName);
435435
assertTrue(result.getSearchResult().toLowerCase().contains("<b>"));
436436

437437
// Searching the title of the file should also return results
438-
list = elasticSearchService.search("keyboard", siteIds, 0, 10);
438+
list = elasticSearchService.search("keyboard", siteIds, null, 0, 10);
439439
assertNotEquals(0, list.size());
440440
assertNotNull(list.get(0));
441441
assertEquals(list.get(0).getReference(), resourceName);

0 commit comments

Comments
 (0)