fix: fix missing not in (#30207)

This commit is contained in:
wangxiaolei 2025-12-26 16:52:34 +08:00 committed by GitHub
parent 8611301722
commit d20a8d5b77
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 3 deletions

View File

@ -1219,7 +1219,7 @@ class DatasetRetrieval:
case "" | ">=": case "" | ">=":
filters.append(DatasetDocument.doc_metadata[metadata_name].as_float() >= value) filters.append(DatasetDocument.doc_metadata[metadata_name].as_float() >= value)
case "in": case "in" | "not in":
if isinstance(value, str): if isinstance(value, str):
value_list = [v.strip() for v in value.split(",") if v.strip()] value_list = [v.strip() for v in value.split(",") if v.strip()]
elif isinstance(value, (list, tuple)): elif isinstance(value, (list, tuple)):
@ -1228,9 +1228,11 @@ class DatasetRetrieval:
value_list = [str(value)] if value is not None else [] value_list = [str(value)] if value is not None else []
if not value_list: if not value_list:
filters.append(literal(False)) # `field in []` is False, `field not in []` is True
filters.append(literal(condition == "not in"))
else: else:
filters.append(json_field.in_(value_list)) op = json_field.in_ if condition == "in" else json_field.notin_
filters.append(op(value_list))
case _: case _:
pass pass