@@ -189,12 +189,32 @@ export enum SchemaFieldTypes {
189189 GEOSHAPE = 'GEOSHAPE'
190190}
191191
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+
192211type CreateSchemaField <
193212 T extends SchemaFieldTypes ,
194213 E = Record < PropertyKey , unknown >
195214> = T | ( {
196215 type : T ;
197216 AS ?: string ;
217+ MISSING_VALUES ?: MissingValues ;
198218} & E ) ;
199219
200220type CreateSchemaCommonField <
@@ -313,11 +333,14 @@ export function pushSchema(args: RedisCommandArguments, schema: RediSearchSchema
313333 args . push ( 'WITHSUFFIXTRIE' ) ;
314334 }
315335
336+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
337+
316338 break ;
317339
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 ;
321344
322345 case SchemaFieldTypes . TAG :
323346 if ( fieldOptions . SEPARATOR ) {
@@ -332,6 +355,8 @@ export function pushSchema(args: RedisCommandArguments, schema: RediSearchSchema
332355 args . push ( 'WITHSUFFIXTRIE' ) ;
333356 }
334357
358+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
359+
335360 break ;
336361
337362 case SchemaFieldTypes . VECTOR :
@@ -373,13 +398,17 @@ export function pushSchema(args: RedisCommandArguments, schema: RediSearchSchema
373398 }
374399 } ) ;
375400
401+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
402+
376403 continue ; // vector fields do not contain SORTABLE and NOINDEX options
377404
378405 case SchemaFieldTypes . GEOSHAPE :
379406 if ( fieldOptions . COORD_SYSTEM !== undefined ) {
380407 args . push ( 'COORD_SYSTEM' , fieldOptions . COORD_SYSTEM ) ;
381408 }
382409
410+ pushMissingValues ( args , fieldOptions . MISSING_VALUES ) ;
411+
383412 continue ; // geo shape fields do not contain SORTABLE and NOINDEX options
384413 }
385414
0 commit comments