4
4
import static redis .clients .jedis .Protocol .Keyword .*;
5
5
6
6
import java .util .*;
7
+ import java .util .concurrent .atomic .AtomicInteger ;
7
8
import java .util .stream .Collectors ;
8
9
import org .json .JSONArray ;
9
10
import org .json .JSONObject ;
@@ -40,6 +41,7 @@ protected void setProtocol(RedisProtocol proto) {
40
41
}
41
42
42
43
private volatile JsonObjectMapper jsonObjectMapper ;
44
+ private final AtomicInteger searchDialect = new AtomicInteger (0 );
43
45
44
46
private JedisBroadcastAndRoundRobinConfig broadcastAndRoundRobinConfig = null ;
45
47
@@ -3198,32 +3200,34 @@ public final CommandObject<SearchResult> ftSearch(String indexName, String query
3198
3200
3199
3201
public final CommandObject <SearchResult > ftSearch (String indexName , String query , FTSearchParams params ) {
3200
3202
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .SEARCH ), indexName )
3201
- .add (query ).addParams (params ), new SearchResultBuilder (!params .getNoContent (), params .getWithScores (), true ));
3203
+ .add (query ).addParams (params . dialectOptional ( searchDialect . get ()) ), new SearchResultBuilder (!params .getNoContent (), params .getWithScores (), true ));
3202
3204
}
3203
3205
3204
3206
public final CommandObject <SearchResult > ftSearch (String indexName , Query query ) {
3205
- return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .SEARCH ), indexName ).addParams (query ),
3207
+ return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .SEARCH ), indexName )
3208
+ .addParams (query .dialectOptional (searchDialect .get ())),
3206
3209
new SearchResultBuilder (!query .getNoContent (), query .getWithScores (), true ));
3207
3210
}
3208
3211
3209
3212
public final CommandObject <SearchResult > ftSearch (byte [] indexName , Query query ) {
3210
- return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .SEARCH ), indexName ).addParams (query ),
3213
+ return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .SEARCH ), indexName )
3214
+ .addParams (query .dialectOptional (searchDialect .get ())),
3211
3215
new SearchResultBuilder (!query .getNoContent (), query .getWithScores (), false ));
3212
3216
}
3213
3217
3214
3218
public final CommandObject <String > ftExplain (String indexName , Query query ) {
3215
3219
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .EXPLAIN ), indexName )
3216
- .addParams (query ), BuilderFactory .STRING );
3220
+ .addParams (query . dialectOptional ( searchDialect . get ()) ), BuilderFactory .STRING );
3217
3221
}
3218
3222
3219
3223
public final CommandObject <List <String >> ftExplainCLI (String indexName , Query query ) {
3220
3224
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .EXPLAINCLI ), indexName )
3221
- .addParams (query ), BuilderFactory .STRING_LIST );
3225
+ .addParams (query . dialectOptional ( searchDialect . get ()) ), BuilderFactory .STRING_LIST );
3222
3226
}
3223
3227
3224
3228
public final CommandObject <AggregationResult > ftAggregate (String indexName , AggregationBuilder aggr ) {
3225
3229
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .AGGREGATE ), indexName )
3226
- .addObjects (aggr .getArgs ( )), !aggr .isWithCursor () ? SearchBuilderFactory .SEARCH_AGGREGATION_RESULT
3230
+ .addParams (aggr .dialectOptional ( searchDialect . get () )), !aggr .isWithCursor () ? SearchBuilderFactory .SEARCH_AGGREGATION_RESULT
3227
3231
: SearchBuilderFactory .SEARCH_AGGREGATION_RESULT_WITH_CURSOR );
3228
3232
}
3229
3233
@@ -3242,7 +3246,7 @@ public final CommandObject<Map.Entry<AggregationResult, Map<String, Object>>> ft
3242
3246
String indexName , FTProfileParams profileParams , AggregationBuilder aggr ) {
3243
3247
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .PROFILE ), indexName )
3244
3248
.add (SearchKeyword .AGGREGATE ).addParams (profileParams ).add (SearchKeyword .QUERY )
3245
- .addObjects (aggr .getArgs ( )), new SearchProfileResponseBuilder <>(!aggr .isWithCursor ()
3249
+ .addParams (aggr .dialectOptional ( searchDialect . get () )), new SearchProfileResponseBuilder <>(!aggr .isWithCursor ()
3246
3250
? SearchBuilderFactory .SEARCH_AGGREGATION_RESULT
3247
3251
: SearchBuilderFactory .SEARCH_AGGREGATION_RESULT_WITH_CURSOR ));
3248
3252
}
@@ -3251,16 +3255,16 @@ public final CommandObject<Map.Entry<SearchResult, Map<String, Object>>> ftProfi
3251
3255
String indexName , FTProfileParams profileParams , Query query ) {
3252
3256
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .PROFILE ), indexName )
3253
3257
.add (SearchKeyword .SEARCH ).addParams (profileParams ).add (SearchKeyword .QUERY )
3254
- .addParams (query ) , new SearchProfileResponseBuilder <>( new SearchResultBuilder (
3255
- !query .getNoContent (), query .getWithScores (), true )));
3258
+ .addParams (query . dialectOptional ( searchDialect . get ())) , new SearchProfileResponseBuilder <>(
3259
+ new SearchResultBuilder ( !query .getNoContent (), query .getWithScores (), true )));
3256
3260
}
3257
3261
3258
3262
public final CommandObject <Map .Entry <SearchResult , Map <String , Object >>> ftProfileSearch (
3259
3263
String indexName , FTProfileParams profileParams , String query , FTSearchParams searchParams ) {
3260
3264
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .PROFILE ), indexName )
3261
3265
.add (SearchKeyword .SEARCH ).addParams (profileParams ).add (SearchKeyword .QUERY ).add (query )
3262
- .addParams (searchParams ) , new SearchProfileResponseBuilder <>( new SearchResultBuilder (
3263
- !searchParams .getNoContent (), searchParams .getWithScores (), true )));
3266
+ .addParams (searchParams . dialectOptional ( searchDialect . get ())) , new SearchProfileResponseBuilder <>(
3267
+ new SearchResultBuilder ( !searchParams .getNoContent (), searchParams .getWithScores (), true )));
3264
3268
}
3265
3269
3266
3270
public final CommandObject <String > ftDropIndex (String indexName ) {
@@ -3316,7 +3320,7 @@ public final CommandObject<Map<String, Map<String, Double>>> ftSpellCheck(String
3316
3320
public final CommandObject <Map <String , Map <String , Double >>> ftSpellCheck (String index , String query ,
3317
3321
FTSpellCheckParams spellCheckParams ) {
3318
3322
return new CommandObject <>(checkAndRoundRobinSearchCommand (commandArguments (SearchCommand .SPELLCHECK ), index ).add (query )
3319
- .addParams (spellCheckParams ), SearchBuilderFactory .SEARCH_SPELLCHECK_RESPONSE );
3323
+ .addParams (spellCheckParams . dialectOptional ( searchDialect . get ()) ), SearchBuilderFactory .SEARCH_SPELLCHECK_RESPONSE );
3320
3324
}
3321
3325
3322
3326
public final CommandObject <Map <String , Object >> ftInfo (String indexName ) {
@@ -4192,6 +4196,11 @@ public void setJsonObjectMapper(JsonObjectMapper jsonObjectMapper) {
4192
4196
this .jsonObjectMapper = jsonObjectMapper ;
4193
4197
}
4194
4198
4199
+ public void setDefaultSearchDialect (int dialect ) {
4200
+ if (dialect == 0 ) throw new IllegalArgumentException ("DIALECT=0 cannot be set." );
4201
+ this .searchDialect .set (dialect );
4202
+ }
4203
+
4195
4204
private class SearchProfileResponseBuilder <T > extends Builder <Map .Entry <T , Map <String , Object >>> {
4196
4205
4197
4206
private final Builder <T > replyBuilder ;
0 commit comments