@@ -26,6 +26,7 @@ private ModelQueryFactory() {
26
26
public static SearchRequest createModelQuery (ModelSearchRequest request ){
27
27
var must = new ArrayList <Query >();
28
28
var should = new ArrayList <Query >();
29
+ var mustNot = new ArrayList <Query >();
29
30
30
31
var incompleteFrom = request .getIncludeIncompleteFrom ();
31
32
if (incompleteFrom != null && !incompleteFrom .isEmpty ()){
@@ -44,8 +45,79 @@ public static SearchRequest createModelQuery(ModelSearchRequest request){
44
45
if (modelType != null && !modelType .isEmpty ()){
45
46
var modelTypeQuery = QueryFactoryUtils .termsQuery ("type" , modelType .stream ().map (ModelType ::name ).toList ());
46
47
must .add (modelTypeQuery );
48
+ }
49
+
50
+ mustNot .add (QueryFactoryUtils .termQuery ("type" , "SCHEMA" ));
51
+
52
+ var groups = request .getGroups ();
53
+ if (groups != null && !groups .isEmpty ()){
54
+ var groupsQuery = QueryFactoryUtils .termsQuery ("isPartOf" , groups );
55
+ must .add (groupsQuery );
47
56
}
48
57
58
+ var organizations = request .getOrganizations ();
59
+ if (organizations != null && !organizations .isEmpty ()){
60
+ var orgsQuery = QueryFactoryUtils .termsQuery ("contributor" , organizations .stream ().map (UUID ::toString ).toList ());
61
+ must .add (orgsQuery );
62
+ }
63
+
64
+ var language = request .getLanguage ();
65
+ if (language != null && !language .isBlank ()) {
66
+ var languageQuery = QueryFactoryUtils .termQuery ("language" , language );
67
+ must .add (languageQuery );
68
+ }
69
+
70
+ var status = request .getStatus ();
71
+ if (status != null && !status .isEmpty ()){
72
+ var statusQuery = QueryFactoryUtils .termsQuery ("status" , status .stream ().map (Status ::name ).toList ());
73
+ must .add (statusQuery );
74
+ }
75
+
76
+ var finalQuery = QueryBuilders .bool ()
77
+ .must (must )
78
+ .mustNot (mustNot )
79
+ .minimumShouldMatch ("1" )
80
+ .should (should )
81
+ .build ();
82
+
83
+ var sortLang = request .getSortLang () != null ? request .getSortLang () : QueryFactoryUtils .DEFAULT_SORT_LANG ;
84
+ var sort = SortOptionsBuilders .field ()
85
+ .field ("label." + sortLang + ".keyword" )
86
+ .order (SortOrder .Asc )
87
+ .unmappedType (FieldType .Keyword )
88
+ .build ();
89
+
90
+ var sr = new SearchRequest .Builder ()
91
+ .index (OpenSearchIndexer .OPEN_SEARCH_INDEX_MODEL )
92
+ .size (QueryFactoryUtils .pageSize (request .getPageSize ()))
93
+ .from (QueryFactoryUtils .pageFrom (request .getPageFrom ()))
94
+ .sort (SortOptions .of (s -> s .field (sort )))
95
+ .query (finalQuery ._toQuery ())
96
+ .build ();
97
+
98
+ logPayload (sr );
99
+ return sr ;
100
+ }
101
+
102
+ public static SearchRequest createSchemaQuery (ModelSearchRequest request ) {
103
+ var must = new ArrayList <Query >();
104
+ var should = new ArrayList <Query >();
105
+
106
+ var incompleteFrom = request .getIncludeIncompleteFrom ();
107
+ if (incompleteFrom != null && !incompleteFrom .isEmpty ()){
108
+ var incompleteFromQuery = QueryFactoryUtils .termsQuery ("contributor" , incompleteFrom .stream ().map (UUID ::toString ).toList ());
109
+ should .add (incompleteFromQuery );
110
+ }
111
+
112
+ should .add (QueryFactoryUtils .hideIncompleteStatusQuery ());
113
+
114
+ var queryString = request .getQuery ();
115
+ if (queryString != null && !queryString .isBlank ()){
116
+ must .add (QueryFactoryUtils .labelQuery (queryString ));
117
+ }
118
+
119
+ must .add (QueryFactoryUtils .termQuery ("type" , "SCHEMA" ));
120
+
49
121
var groups = request .getGroups ();
50
122
if (groups != null && !groups .isEmpty ()){
51
123
var groupsQuery = QueryFactoryUtils .termsQuery ("isPartOf" , groups );
@@ -93,6 +165,6 @@ public static SearchRequest createModelQuery(ModelSearchRequest request){
93
165
94
166
logPayload (sr );
95
167
return sr ;
96
- }
168
+ }
97
169
98
170
}
0 commit comments