|
1 | 1 | package org.alliancegenome.api.service; |
2 | 2 |
|
3 | | -import com.fasterxml.jackson.databind.ObjectMapper; |
4 | | -import jakarta.enterprise.context.RequestScoped; |
5 | | -import jakarta.inject.Inject; |
| 3 | +import static org.alliancegenome.cache.repository.helper.JsonResultResponse.DISTINCT_FIELD_VALUES; |
| 4 | +import static org.elasticsearch.index.query.QueryBuilders.boolQuery; |
| 5 | + |
| 6 | +import java.time.LocalDateTime; |
| 7 | +import java.util.ArrayList; |
| 8 | +import java.util.Arrays; |
| 9 | +import java.util.HashMap; |
| 10 | +import java.util.LinkedHashMap; |
| 11 | +import java.util.List; |
| 12 | +import java.util.Map; |
| 13 | +import java.util.stream.Collectors; |
| 14 | + |
6 | 15 | import org.alliancegenome.api.entity.AlleleVariantSequence; |
7 | 16 | import org.alliancegenome.api.entity.GeneGeneticInteractionDocument; |
8 | 17 | import org.alliancegenome.api.entity.GeneMolecularInteractionDocument; |
|
25 | 34 | import org.apache.commons.lang3.StringUtils; |
26 | 35 | import org.elasticsearch.action.search.SearchResponse; |
27 | 36 | import org.elasticsearch.index.query.BoolQueryBuilder; |
28 | | -import org.elasticsearch.index.query.MatchQueryBuilder; |
29 | | -import org.elasticsearch.index.query.TermQueryBuilder; |
30 | 37 | import org.elasticsearch.search.aggregations.AggregationBuilder; |
31 | 38 | import org.elasticsearch.search.aggregations.AggregationBuilders; |
32 | 39 | import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation; |
|
35 | 42 | import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; |
36 | 43 | import org.elasticsearch.search.sort.SortOrder; |
37 | 44 |
|
38 | | -import java.time.LocalDateTime; |
39 | | -import java.util.*; |
40 | | -import java.util.stream.Collectors; |
| 45 | +import com.fasterxml.jackson.databind.ObjectMapper; |
41 | 46 |
|
42 | | -import static org.alliancegenome.cache.repository.helper.JsonResultResponse.DISTINCT_FIELD_VALUES; |
43 | | -import static org.elasticsearch.index.query.QueryBuilders.boolQuery; |
| 47 | +import jakarta.enterprise.context.RequestScoped; |
| 48 | +import jakarta.inject.Inject; |
44 | 49 |
|
45 | 50 | @RequestScoped |
46 | 51 | public class GeneService { |
@@ -104,10 +109,20 @@ public JsonResultResponse<AlleleVariantSequence> getAllelesAndVariantInfo(String |
104 | 109 |
|
105 | 110 | public JsonResultResponse<GeneGeneticInteractionDocument> getGeneticInteractions(String geneId, Pagination pagination) { |
106 | 111 | BoolQueryBuilder query = boolQuery(); |
107 | | - query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.curie.keyword", geneId)); |
108 | | - query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.primaryExternalId.keyword", geneId)); |
109 | | - query.should(new MatchQueryBuilder("geneGeneticInteraction.geneAssociationSubject.modInternalId.keyword", geneId)); |
| 112 | + |
| 113 | + String[] idFields = { |
| 114 | + "geneGeneticInteraction.geneAssociationSubject.curie.keyword", |
| 115 | + "geneGeneticInteraction.geneAssociationSubject.primaryExternalId.keyword", |
| 116 | + "geneGeneticInteraction.geneAssociationSubject.modInternalId.keyword" |
| 117 | + }; |
| 118 | + BoolQueryBuilder idQuery = boolQuery(); |
| 119 | + Arrays.stream(idFields).forEach(idField -> { |
| 120 | + BoolQueryBuilder orClause = elasticSearchHelper.getBooleanAndedQueryBuilder(idField, geneId); |
| 121 | + idQuery.should(orClause); |
| 122 | + }); |
110 | 123 |
|
| 124 | + query.must(idQuery); |
| 125 | + |
111 | 126 | JsonResultResponse<GeneGeneticInteractionDocument> ret = new JsonResultResponse<>(); |
112 | 127 | ret.setSupplementalData(getGeneticInteractionSupplementalData(query)); |
113 | 128 |
|
@@ -141,13 +156,19 @@ public JsonResultResponse<GeneGeneticInteractionDocument> getGeneticInteractions |
141 | 156 |
|
142 | 157 | public JsonResultResponse<GeneMolecularInteractionDocument> getMolecularInteractions(String geneId, Pagination pagination) { |
143 | 158 | BoolQueryBuilder query = boolQuery(); |
144 | | - BoolQueryBuilder query2 = boolQuery(); |
145 | | - query.must(query2); |
146 | | - query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.curie.keyword", geneId)); |
147 | | - query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.primaryExternalId.keyword", geneId)); |
148 | | - query2.should(new MatchQueryBuilder("geneMolecularInteraction.geneAssociationSubject.modInternalId.keyword", geneId)); |
| 159 | + String[] idFields = { |
| 160 | + "geneMolecularInteraction.geneAssociationSubject.curie.keyword", |
| 161 | + "geneMolecularInteraction.geneAssociationSubject.primaryExternalId.keyword", |
| 162 | + "geneMolecularInteraction.geneAssociationSubject.modInternalId.keyword" |
| 163 | + }; |
| 164 | + BoolQueryBuilder idQuery = boolQuery(); |
| 165 | + Arrays.stream(idFields).forEach(idField -> { |
| 166 | + BoolQueryBuilder orClause = elasticSearchHelper.getBooleanAndedQueryBuilder(idField, geneId); |
| 167 | + idQuery.should(orClause); |
| 168 | + }); |
149 | 169 |
|
150 | | - query.filter(new TermQueryBuilder("category", "gene_molecular_interaction")); |
| 170 | + query.must(idQuery); |
| 171 | + |
151 | 172 | JsonResultResponse<GeneMolecularInteractionDocument> ret = new JsonResultResponse<>(); |
152 | 173 | ret.setSupplementalData(getMolecularInteractionSupplementalData(query)); |
153 | 174 |
|
|
0 commit comments