sibthinon commited on
Commit
6133ede
·
verified ·
1 Parent(s): ddce64a

lower query and name/add fuzzy brand

Browse files
Files changed (1) hide show
  1. app.py +15 -7
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.45
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
- fuzzy_score = fuzz.partial_ratio(corrected_query, name) / 100.0
 
79
  else:
80
- fuzzy_score = 0.0
 
 
81
  # รวม hybrid score
82
- if fuzzy_score < 0.5:
83
  hybrid_score = r.score
84
  else:
85
- hybrid_score = 0.7 * r.score + 0.3 * fuzzy_score
 
 
86
  r.payload["score"] = hybrid_score # เก็บลง payload ใช้เทียบ treshold ตอนเเสดงผล
87
- r.payload["fuzzy_score"] = fuzzy_score # เก็บไว้เผื่อ debug
 
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