From 35af9f62e2e13596821b353f99e613d9d361b2d6 Mon Sep 17 00:00:00 2001 From: zouxiaochuan Date: Wed, 30 Aug 2023 22:15:55 +0800 Subject: [PATCH] [MNT] fix search by name and desciption --- learnware/market/easy.py | 49 +++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/learnware/market/easy.py b/learnware/market/easy.py index e6fcdf8..9a91f05 100644 --- a/learnware/market/easy.py +++ b/learnware/market/easy.py @@ -624,29 +624,42 @@ class EasyMarket(BaseMarket): # sematic spec in database may contain more keys than user input pass + name2 = semantic_spec2["Name"]["Values"].lower() + description2 = semantic_spec2["Description"]["Values"].lower() + for key in semantic_spec1.keys(): - if len(semantic_spec1[key]["Values"]) == 0: - continue - if len(semantic_spec2[key]["Values"]) == 0: - continue v1 = semantic_spec1[key]["Values"] v2 = semantic_spec2[key]["Values"] - if semantic_spec1[key]["Type"] == "Class": - if isinstance(v1, list): - v1 = v1[0] - if isinstance(v2, list): - v2 = v2[0] - if v1 != v2: - return False - elif semantic_spec1[key]["Type"] == "Tag": - if not (set(v1) & set(v2)): + + if len(v1) == 0: + # user input is empty, no need to search + continue + + if key in ("Name", "Description"): + # print(f'{v1},{name2},{description2}') + v1 = v1.lower() + if v1 not in name2 and v1 not in description2: return False - elif key == "Name": - if ( - v2.lower() not in v1.lower() - and v2.lower() not in semantic_spec1["Description"]["Values"].lower() - ): + pass + else: + if len(v2) == 0: + # user input contains some key that is not in database return False + + if semantic_spec1[key]["Type"] == "Class": + if isinstance(v1, list): + v1 = v1[0] + if isinstance(v2, list): + v2 = v2[0] + if v1 != v2: + return False + elif semantic_spec1[key]["Type"] == "Tag": + if not (set(v1) & set(v2)): + return False + pass + pass + pass + return True match_learnwares = []