Spaces:
Running
Running
lower query and name/add fuzzy brand
Browse files
app.py
CHANGED
@@ -28,7 +28,7 @@ table = api.table(BASE_ID, TABLE_NAME)
|
|
28 |
# Preload Models
|
29 |
model = SentenceTransformer("BAAI/bge-m3")
|
30 |
collection_name = "product_bge-m3"
|
31 |
-
threshold = 0.
|
32 |
|
33 |
# Utils
|
34 |
def is_non_thai(text):
|
@@ -71,20 +71,28 @@ def search_product(query):
|
|
71 |
|
72 |
scored = []
|
73 |
for r in result:
|
74 |
-
name = r.payload.get("name", "")
|
|
|
|
|
75 |
|
76 |
# ถ้า query สั้นเกินไป ให้ fuzzy_score = 0 เพื่อกันเพี้ยน
|
77 |
if len(corrected_query) >= 3 and name:
|
78 |
-
|
|
|
79 |
else:
|
80 |
-
|
|
|
|
|
81 |
# รวม hybrid score
|
82 |
-
if
|
83 |
hybrid_score = r.score
|
84 |
else:
|
85 |
-
hybrid_score = 0.7 * r.score + 0.3 *
|
|
|
|
|
86 |
r.payload["score"] = hybrid_score # เก็บลง payload ใช้เทียบ treshold ตอนเเสดงผล
|
87 |
-
r.payload["
|
|
|
88 |
r.payload['semantic_score'] = r.score # เก็บไว้เผื่อ debug
|
89 |
scored.append((r, hybrid_score))
|
90 |
|
|
|
28 |
# Preload Models
|
29 |
model = SentenceTransformer("BAAI/bge-m3")
|
30 |
collection_name = "product_bge-m3"
|
31 |
+
threshold = 0.5
|
32 |
|
33 |
# Utils
|
34 |
def is_non_thai(text):
|
|
|
71 |
|
72 |
scored = []
|
73 |
for r in result:
|
74 |
+
name = str(r.payload.get("name", "")).lower()
|
75 |
+
brand = str(r.payload.get("brand", "")).lower()
|
76 |
+
query_lower = corrected_query.lower()
|
77 |
|
78 |
# ถ้า query สั้นเกินไป ให้ fuzzy_score = 0 เพื่อกันเพี้ยน
|
79 |
if len(corrected_query) >= 3 and name:
|
80 |
+
fuzzy_name_score = fuzz.partial_ratio(query_lower, name) / 100.0
|
81 |
+
fuzzy_brand_score = fuzz.partial_ratio(query_lower, brand) / 100.0
|
82 |
else:
|
83 |
+
fuzzy_name_score = 0.0
|
84 |
+
fuzzy_brand_score = fuzz.partial_ratio(query_lower, brand) / 100.0
|
85 |
+
|
86 |
# รวม hybrid score
|
87 |
+
if fuzzy_name_score < 0.5:
|
88 |
hybrid_score = r.score
|
89 |
else:
|
90 |
+
hybrid_score = 0.7 * r.score + 0.3 * fuzzy_name_score
|
91 |
+
if fuzzy_brand_score >= 0.8:
|
92 |
+
hybrid_score = hybrid_score*1.2
|
93 |
r.payload["score"] = hybrid_score # เก็บลง payload ใช้เทียบ treshold ตอนเเสดงผล
|
94 |
+
r.payload["fuzzy_name_score"] = fuzzy_name_score # เก็บไว้เผื่อ debug
|
95 |
+
r.payload["fuzzy_brand_score"] = fuzzy_brand_score # เก็บไว้เผื่อ debug
|
96 |
r.payload['semantic_score'] = r.score # เก็บไว้เผื่อ debug
|
97 |
scored.append((r, hybrid_score))
|
98 |
|