File size: 7,012 Bytes
89879a0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
"""
測試關鍵字匹配邏輯 - 基於實際商品資料
"""
def test_keyword_expansion():
"""測試關鍵字擴展邏輯"""
def extract_keywords_with_expansion(query_text: str):
"""擴展版關鍵字提取"""
# 移除常見的查詢詞彙
stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋']
# 分割並清理關鍵字
words = query_text.replace('?', '').replace('?', '').split()
keywords = [word for word in words if word not in stop_words and len(word) > 1]
# 擴展相關關鍵字
expanded_keywords = []
for keyword in keywords:
expanded_keywords.append(keyword)
# 貓砂相關擴展
if '貓砂' in keyword or '貓' in keyword:
expanded_keywords.extend(['礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter'])
# 狗糧相關擴展
if '狗糧' in keyword or '狗' in keyword:
expanded_keywords.extend(['犬糧', '犬種', '狗食', 'dog'])
# 寵物相關擴展
if '寵物' in keyword:
expanded_keywords.extend(['貓', '狗', '犬', 'pet', 'cat'])
return expanded_keywords if expanded_keywords else [query_text.strip()]
print("🔍 測試關鍵字擴展邏輯")
print("=" * 60)
test_queries = [
"你好, 請問有沒有貓砂相關產品?",
"是否有推薦貓砂?",
"有什麼寵物用品?",
"查詢狗糧庫存",
"貓砂還有嗎?"
]
for query in test_queries:
keywords = extract_keywords_with_expansion(query)
print(f"'{query}'")
print(f" → 擴展關鍵字: {keywords}")
print()
def test_product_matching():
"""測試商品匹配邏輯"""
# 實際商品資料(來自您的 Supabase)
products = [
{
"id": 1,
"productCode": "OL1100-1",
"productName": "毆力天然犬種300g 室內成犬無榖小顆粒",
"stock": 100,
"category_id": 1
},
{
"id": 2,
"productCode": "SW-06-01",
"productName": "Shovel well豪好鏟 破碎型礦砂",
"stock": 50,
"category_id": 1
},
{
"id": 3,
"productCode": "TL-03",
"productName": "美國極冠貓砂 薰衣草12kg",
"stock": 48,
"category_id": 1
},
{
"id": 4,
"productCode": "SL11002",
"productName": "首領汪 膠原鴨舌 5入彭湃包",
"stock": 100,
"category_id": 1
}
]
def search_products_simulation(query_text: str):
"""模擬商品搜尋"""
# 擴展關鍵字
def extract_keywords_with_expansion(query_text: str):
stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋']
words = query_text.replace('?', '').replace('?', '').split()
keywords = [word for word in words if word not in stop_words and len(word) > 1]
expanded_keywords = []
for keyword in keywords:
expanded_keywords.append(keyword)
if '貓砂' in keyword or '貓' in keyword:
expanded_keywords.extend(['礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter'])
if '狗糧' in keyword or '狗' in keyword:
expanded_keywords.extend(['犬糧', '犬種', '狗食', 'dog'])
if '寵物' in keyword:
expanded_keywords.extend(['貓', '狗', '犬', 'pet', 'cat'])
return expanded_keywords if expanded_keywords else [query_text.strip()]
keywords = extract_keywords_with_expansion(query_text)
matched_products = []
for product in products:
# 檢查是否有任一關鍵字匹配
for keyword in keywords:
if (keyword.lower() in product["productName"].lower() or
keyword.lower() in product["productCode"].lower()):
matched_products.append({
"product": product,
"matched_keyword": keyword
})
break # 找到匹配就跳出
return matched_products, keywords
print("🛍️ 測試商品匹配邏輯")
print("=" * 60)
test_queries = [
"你好, 請問有沒有貓砂相關產品?",
"是否有推薦貓砂?",
"有什麼寵物用品?",
"查詢狗糧庫存",
"礦砂還有嗎?",
"犬種商品"
]
for query in test_queries:
print(f"查詢: '{query}'")
matched_products, keywords = search_products_simulation(query)
print(f"使用關鍵字: {keywords}")
print(f"找到 {len(matched_products)} 個商品:")
for match in matched_products:
product = match["product"]
keyword = match["matched_keyword"]
print(f" ✅ {product['productName']} (匹配關鍵字: '{keyword}', 庫存: {product['stock']})")
if not matched_products:
print(" ❌ 沒有找到匹配的商品")
print("-" * 60)
def test_specific_cat_litter_queries():
"""專門測試貓砂查詢"""
print("\n🐱 專門測試貓砂查詢")
print("=" * 60)
# 貓砂商品
cat_litter_products = [
"Shovel well豪好鏟 破碎型礦砂",
"美國極冠貓砂 薰衣草12kg"
]
# 測試查詢
cat_queries = [
"貓砂",
"礦砂",
"貓",
"litter",
"豪好鏟",
"極冠"
]
print("貓砂相關商品:")
for product in cat_litter_products:
print(f" - {product}")
print(f"\n測試查詢關鍵字:")
for query in cat_queries:
matches = []
for product in cat_litter_products:
if query.lower() in product.lower():
matches.append(product)
print(f" '{query}' → 匹配 {len(matches)} 個商品")
for match in matches:
print(f" ✅ {match}")
def main():
"""主函數"""
print("🚀 開始關鍵字匹配測試\n")
test_keyword_expansion()
test_product_matching()
test_specific_cat_litter_queries()
print("\n" + "=" * 60)
print("✅ 測試完成!")
print("\n💡 分析結果:")
print("1. 關鍵字擴展邏輯應該能找到 '礦砂' 商品")
print("2. '貓砂' 查詢應該匹配到兩個商品")
print("3. 確認搜尋邏輯是否正確運作")
if __name__ == "__main__":
main()
|