Skip to content

Commit 01bdbdb

Browse files
committed
#91 Implemented support for highlights
1 parent e9f393a commit 01bdbdb

File tree

6 files changed

+116
-54
lines changed

6 files changed

+116
-54
lines changed

gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticFeatureReader.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ private String nextHit() {
104104
final ElasticHit hit = searchHitIterator.next();
105105
final SimpleFeatureType type = getFeatureType();
106106
final Map<String, Object> source = hit.getSource();
107+
final Map<String, List<String>> highlights = hit.getHighlight();
107108

108109
final Float score;
109110
final Float relativeScore;
@@ -120,6 +121,12 @@ private String nextHit() {
120121
final String sourceName = (String) descriptor.getUserData().get(FULL_NAME);
121122

122123
List<Object> values = hit.field(sourceName);
124+
125+
if (values == null && highlights != null && highlights.containsKey(sourceName)) {
126+
// read field from source
127+
values = Collections.unmodifiableList(highlights.get(sourceName));
128+
}
129+
123130
if (values == null && source != null) {
124131
// read field from source
125132
values = parserUtil.readField(source, sourceName);

gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticFeatureSource.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77

88
import java.io.IOException;
9+
import java.util.Collections;
910
import java.util.List;
1011
import java.util.Map;
1112
import java.util.logging.Level;
@@ -210,6 +211,18 @@ private ElasticRequest prepareSearchRequest(Query query, boolean scroll) throws
210211
searchRequest.setSize(0);
211212
}
212213

214+
if (filterToElastic.gethighlights() != null) {
215+
searchRequest.setHighlights(filterToElastic.gethighlights());
216+
217+
List<String> source = searchRequest.getSourceIncludes();
218+
for (String key : filterToElastic.gethighlights().keySet()) {
219+
if (source.contains(key))
220+
{
221+
source.remove(key);
222+
}
223+
}
224+
}
225+
213226
return searchRequest;
214227
}
215228

gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticHit.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public class ElasticHit {
3030

3131
private Map<String,List<Object>> fields;
3232

33+
private Map<String,List<String>> highlight;
34+
3335
public String getIndex() {
3436
return index;
3537
}
@@ -78,4 +80,11 @@ public List<Object> field(String name) {
7880
return this.fields != null ? this.fields.get(name) : null;
7981
}
8082

83+
public Map<String, List<String>> getHighlight() {
84+
return highlight;
85+
}
86+
87+
public void setHighlight(Map<String, List<String>> highlight) {
88+
this.highlight = highlight;
89+
}
8190
}

gt-elasticsearch/src/main/java/mil/nga/giat/data/elasticsearch/ElasticRequest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public class ElasticRequest {
1515

1616
private Map<String,Map<String,Map<String,Object>>> aggregations;
1717

18+
private Map<String, Object> highlights;
19+
1820
private Integer size;
1921

2022
private Integer from;
@@ -49,6 +51,14 @@ public void setAggregations(Map<String,Map<String,Map<String,Object>>> aggregati
4951
this.aggregations = aggregations;
5052
}
5153

54+
public Map<String, Object> getHighlights() {
55+
return highlights;
56+
}
57+
58+
public void setHighlights(Map<String, Object> highlights) {
59+
this.highlights = highlights;
60+
}
61+
5262
public Integer getSize() {
5363
return size;
5464
}

0 commit comments

Comments
 (0)