【Dify】 恢复in功能

pull/22121/head
liuchangsheng@wisdomidata.com 12 months ago
parent 1fe6477822
commit 342a8f8224

@ -1058,6 +1058,20 @@ class DatasetRetrieval:
filters.append(sqlalchemy_cast(DatasetDocument.doc_metadata[metadata_name].astext, Float) <= value) filters.append(sqlalchemy_cast(DatasetDocument.doc_metadata[metadata_name].astext, Float) <= value)
case "" | ">=": case "" | ">=":
filters.append(sqlalchemy_cast(DatasetDocument.doc_metadata[metadata_name].astext, Float) >= value) filters.append(sqlalchemy_cast(DatasetDocument.doc_metadata[metadata_name].astext, Float) >= value)
case "in":
values = []
if isinstance(value, str):
if value.strip(): # 非空字符串
values = [v.strip() for v in value.split(',')]
elif isinstance(value, list):
values = value # 或者进行其他处理
if not values:
filters.append(1 == 2)
else:
filters.append(
(text("documents.doc_metadata ->> :key in :value")).params(key=metadata_name, value=tuple(values))
)
case _: case _:
pass pass
return filters return filters

@ -533,10 +533,16 @@ class KnowledgeRetrievalNode(LLMNode):
case "" | ">=": case "" | ">=":
filters.append(sqlalchemy_cast(Document.doc_metadata[metadata_name].astext, Float) >= value) filters.append(sqlalchemy_cast(Document.doc_metadata[metadata_name].astext, Float) >= value)
case "in": case "in":
if value is None or value == "": values = []
if isinstance(value, str):
if value.strip(): # 非空字符串
values = [v.strip() for v in value.split(',')]
elif isinstance(value, list):
values = value # 或者进行其他处理
if not values:
filters.append(1 == 2) filters.append(1 == 2)
else: else:
values = value.split(',')
filters.append( filters.append(
(text("documents.doc_metadata ->> :key in :value")).params(key=metadata_name, value=tuple(values)) (text("documents.doc_metadata ->> :key in :value")).params(key=metadata_name, value=tuple(values))
) )

Loading…
Cancel
Save