Skip to content

Commit e2ce1a6

Browse files
add indexmissing and indexempty support
1 parent aac76e0 commit e2ce1a6

File tree

6 files changed

+794
-5
lines changed

6 files changed

+794
-5
lines changed

redisvl/query/filter.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,24 @@ def _set_value(
7373
self._value = val
7474
self._operator = operator
7575

76+
def is_missing(self) -> "FilterExpression":
77+
"""Create a filter expression for documents missing this field.
78+
79+
Returns:
80+
FilterExpression: A filter expression that matches documents where the field is missing.
81+
82+
.. code-block:: python
83+
84+
from redisvl.query.filter import Tag, Text, Num, Geo, Timestamp
85+
86+
f = Tag("brand").is_missing()
87+
f = Text("title").is_missing()
88+
f = Num("price").is_missing()
89+
f = Geo("location").is_missing()
90+
f = Timestamp("created_at").is_missing()
91+
"""
92+
return FilterExpression(f"ismissing(@{self._field})")
93+
7694

7795
def check_operator_misuse(func: Callable) -> Callable:
7896
@wraps(func)

redisvl/utils/utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ def serialize_item(item):
4545
else:
4646
return item
4747

48-
serialized_data = model.model_dump(exclude_none=True)
48+
# Use exclude_defaults=False to preserve all field attributes including new ones
49+
serialized_data = model.model_dump(exclude_none=True, exclude_defaults=False)
4950
for key, value in serialized_data.items():
5051
serialized_data[key] = serialize_item(value)
5152
return serialized_data

0 commit comments

Comments
 (0)