Skip to content

Commit d70de2c

Browse files
authored
Merge pull request #11134 from GlobalDataverseCommunityConsortium/IQSS/11133-search-fix0with-multiple-groups
IQSS/11133-search-fix
2 parents 6f964a3 + 7c2e3be commit d70de2c

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

doc/release-notes/11133-search-fix.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Search fix when using AVOID_EXPENSIVE_SOLR_JOIN=true
2+
3+
Dataverse v6.5 introduced a bug which causes search to fail for non-superusers in multiple groups when the AVOID_EXPENSIVE_SOLR_JOIN feature flag is set to true. This releases fixes the bug.

src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,13 @@ public SolrQueryResponse search(
335335
// -----------------------------------
336336
// PERMISSION FILTER QUERY
337337
// -----------------------------------
338-
String permissionFilterQuery = this.getPermissionFilterQuery(dataverseRequest, solrQuery, onlyDatatRelatedToMe, addFacets);
339-
if (!StringUtils.isBlank(permissionFilterQuery)) {
340-
solrQuery.addFilterQuery(permissionFilterQuery);
338+
String permissionFilterQuery = getPermissionFilterQuery(dataverseRequest, solrQuery, onlyDatatRelatedToMe, addFacets);
339+
if (!permissionFilterQuery.isEmpty()) {
340+
String[] filterParts = permissionFilterQuery.split("&q1=");
341+
solrQuery.addFilterQuery(filterParts[0]);
342+
if(filterParts.length > 1 ) {
343+
solrQuery.add("q1", filterParts[1]);
344+
}
341345
}
342346

343347
/**
@@ -1099,9 +1103,9 @@ private String buildPermissionFilterQuery(boolean avoidJoin, String permissionFi
10991103
String query = (avoidJoin&& !isAllGroups(permissionFilterGroups)) ? SearchFields.PUBLIC_OBJECT + ":" + true : "";
11001104
if (permissionFilterGroups != null && !isAllGroups(permissionFilterGroups)) {
11011105
if (!query.isEmpty()) {
1102-
query = "(" + query + " OR " + "{!join from=" + SearchFields.DEFINITION_POINT + " to=id}" + SearchFields.DISCOVERABLE_BY + ":" + permissionFilterGroups + ")";
1106+
query = "(" + query + " OR " + "{!join from=" + SearchFields.DEFINITION_POINT + " to=id v=$q1})&q1=" + SearchFields.DISCOVERABLE_BY + ":" + permissionFilterGroups;
11031107
} else {
1104-
query = "{!join from=" + SearchFields.DEFINITION_POINT + " to=id}" + SearchFields.DISCOVERABLE_BY + ":" + permissionFilterGroups;
1108+
query = "{!join from=" + SearchFields.DEFINITION_POINT + " to=id v=$q1}&q1=" + SearchFields.DISCOVERABLE_BY + ":" + permissionFilterGroups;
11051109
}
11061110
}
11071111
return query;

0 commit comments

Comments
 (0)