@@ -189,12 +189,32 @@ export enum SchemaFieldTypes {
189
189
GEOSHAPE = 'GEOSHAPE'
190
190
}
191
191
192
+ export interface MissingValues {
193
+ INDEXEMPTY ?: boolean ;
194
+ INDEXMISSING ?: boolean ;
195
+ }
196
+
197
+ function pushMissingValues ( args : RedisCommandArguments , missingValues ?: MissingValues ) {
198
+ if ( ! missingValues ) {
199
+ return ;
200
+ }
201
+
202
+ if ( missingValues . INDEXEMPTY ) {
203
+ args . push ( "INDEXEMPTY" ) ;
204
+ }
205
+
206
+ if ( missingValues . INDEXMISSING ) {
207
+ args . push ( "INDEXMISSING" ) ;
208
+ }
209
+ }
210
+
192
211
type CreateSchemaField <
193
212
T extends SchemaFieldTypes ,
194
213
E = Record < PropertyKey , unknown >
195
214
> = T | ( {
196
215
type : T ;
197
216
AS ?: string ;
217
+ MISSING_VALUES ?: MissingValues ;
198
218
} & E ) ;
199
219
200
220
type CreateSchemaCommonField <
@@ -313,11 +333,14 @@ export function pushSchema(args: RedisCommandArguments, schema: RediSearchSchema
313
333
args . push ( 'WITHSUFFIXTRIE' ) ;
314
334
}
315
335
336
+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
337
+
316
338
break ;
317
339
318
- // case SchemaFieldTypes.NUMERIC:
319
- // case SchemaFieldTypes.GEO:
320
- // break;
340
+ case SchemaFieldTypes . NUMERIC :
341
+ case SchemaFieldTypes . GEO :
342
+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
343
+ break ;
321
344
322
345
case SchemaFieldTypes . TAG :
323
346
if ( fieldOptions . SEPARATOR ) {
@@ -332,6 +355,8 @@ export function pushSchema(args: RedisCommandArguments, schema: RediSearchSchema
332
355
args . push ( 'WITHSUFFIXTRIE' ) ;
333
356
}
334
357
358
+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
359
+
335
360
break ;
336
361
337
362
case SchemaFieldTypes . VECTOR :
@@ -373,13 +398,17 @@ export function pushSchema(args: RedisCommandArguments, schema: RediSearchSchema
373
398
}
374
399
} ) ;
375
400
401
+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
402
+
376
403
continue ; // vector fields do not contain SORTABLE and NOINDEX options
377
404
378
405
case SchemaFieldTypes . GEOSHAPE :
379
406
if ( fieldOptions . COORD_SYSTEM !== undefined ) {
380
407
args . push ( 'COORD_SYSTEM' , fieldOptions . COORD_SYSTEM ) ;
381
408
}
382
409
410
+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
411
+
383
412
continue ; // geo shape fields do not contain SORTABLE and NOINDEX options
384
413
}
385
414
0 commit comments