1
1
package org .nlpcn .es4sql .query ;
2
2
3
- import org .elasticsearch .action .ActionRequestBuilder ;
4
3
import org .elasticsearch .action .search .SearchRequestBuilder ;
5
4
import org .elasticsearch .action .support .IndicesOptions ;
6
5
import org .elasticsearch .client .Client ;
@@ -50,19 +49,17 @@ protected void updateRequestWithIndexAndRoutingOptions(Select select, SearchRequ
50
49
51
50
protected void updateRequestWithHighlight (Select select , SearchRequestBuilder request ) {
52
51
53
- //? here Map<String,Object> HEIGHLIGHT('field',JSON) ?
54
-
55
52
for (Hint hint : select .getHints ()){
56
53
if (hint .getType () == HintType .HIGHLIGHT ){
57
- HighlightBuilder .Field highlightField = parseHeiglightField (hint .getParams ());
54
+ HighlightBuilder .Field highlightField = parseHighlightField (hint .getParams ());
58
55
if (highlightField != null ){
59
56
request .addHighlightedField (highlightField );
60
57
}
61
58
}
62
59
}
63
60
}
64
61
65
- protected HighlightBuilder .Field parseHeiglightField (Object [] params )
62
+ protected HighlightBuilder .Field parseHighlightField (Object [] params )
66
63
{
67
64
if (params == null || params .length == 0 || params .length > 2 ){
68
65
//todo: exception.
@@ -71,13 +68,12 @@ protected HighlightBuilder.Field parseHeiglightField(Object[] params)
71
68
if (params .length == 1 ){
72
69
return field ;
73
70
}
74
- Map <String ,Object > heighlightParams = (Map <String ,Object >) params [1 ];
71
+ Map <String ,Object > highlightParams = (Map <String ,Object >) params [1 ];
75
72
76
- for (Map .Entry <String ,Object > param : heighlightParams .entrySet ()){
73
+ for (Map .Entry <String ,Object > param : highlightParams .entrySet ()){
77
74
switch (param .getKey ()){
78
75
case "boundary_chars" :
79
- //todo: array.
80
- field .boundaryChars ((char []) param .getValue ());
76
+ field .boundaryChars (fromArrayListToCharArray ((ArrayList ) param .getValue ()));
81
77
break ;
82
78
case "boundary_max_scan" :
83
79
field .boundaryMaxScan ((Integer ) param .getValue ());
@@ -98,7 +94,7 @@ protected HighlightBuilder.Field parseHeiglightField(Object[] params)
98
94
field .highlightFilter ((Boolean ) param .getValue ());
99
95
break ;
100
96
case "matched_fields" :
101
- field .matchedFields ((String []) param .getValue ());
97
+ field .matchedFields ((String []) (( ArrayList ) param .getValue ()). toArray ( new String [(( ArrayList ) param . getValue ()). size ()] ));
102
98
break ;
103
99
case "no_match_size" :
104
100
field .noMatchSize ((Integer ) param .getValue ());
@@ -113,10 +109,10 @@ protected HighlightBuilder.Field parseHeiglightField(Object[] params)
113
109
field .phraseLimit ((Integer ) param .getValue ());
114
110
break ;
115
111
case "post_tags" :
116
- field .postTags ((String []) param .getValue ());
112
+ field .postTags ((String []) (( ArrayList ) param .getValue ()). toArray ( new String [(( ArrayList ) param . getValue ()). size ()] ));
117
113
break ;
118
114
case "pre_tags" :
119
- field .preTags ((String []) param .getValue ());
115
+ field .preTags ((String []) (( ArrayList ) param .getValue ()). toArray ( new String [(( ArrayList ) param . getValue ()). size ()] ));
120
116
break ;
121
117
case "require_field_match" :
122
118
field .requireFieldMatch ((Boolean ) param .getValue ());
@@ -127,6 +123,16 @@ protected HighlightBuilder.Field parseHeiglightField(Object[] params)
127
123
return field ;
128
124
}
129
125
126
+ private char [] fromArrayListToCharArray (ArrayList arrayList ){
127
+ char [] chars = new char [arrayList .size ()];
128
+ int i =0 ;
129
+ for (Object item : arrayList ){
130
+ chars [i ] = item .toString ().charAt (0 );
131
+ i ++;
132
+ }
133
+ return chars ;
134
+ }
135
+
130
136
131
137
/**
132
138
* Prepare the request, and return ES request.
0 commit comments