File size: 5,161 Bytes
d2d7682 |
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 |
"""
快速測試關鍵字提取修復
"""
def test_keyword_extraction_fix():
"""測試修復後的關鍵字提取"""
def extract_keywords_fixed(query_text: str):
"""修復後的關鍵字提取邏輯"""
# 移除常見的查詢詞彙
stop_words = ['推薦', '有沒有', '是否有', '請問', '想要', '需要', '找', '查詢', '搜尋', '還有嗎', '還有', '嗎', '可以']
# 清理查詢文字
cleaned_text = query_text.replace('?', '').replace('?', '').strip()
# 先嘗試提取核心商品詞彙
core_product_words = ['貓砂', '狗糧', '寵物', '商品', '產品', '貓', '狗', '犬', '礦砂']
extracted_core_words = []
for core_word in core_product_words:
if core_word in cleaned_text:
extracted_core_words.append(core_word)
# 分割並清理關鍵字
words = cleaned_text.split()
keywords = []
for word in words:
if word not in stop_words and len(word) > 1:
keywords.append(word)
# 合併核心詞彙和分割的關鍵字
all_keywords = list(set(extracted_core_words + keywords))
# 如果沒有有效關鍵字,使用清理後的文字
if not all_keywords:
all_keywords = [cleaned_text]
# 擴展相關關鍵字
expanded_keywords = []
for keyword in all_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'])
# 商品相關擴展
if '商品' in keyword or '產品' in keyword:
expanded_keywords.extend(['貓砂', '狗糧', '寵物', '食品', '用品'])
# 去除重複並返回
unique_keywords = list(set(expanded_keywords))
return unique_keywords, extracted_core_words
print("🔧 測試關鍵字提取修復")
print("=" * 50)
# 測試實際的問題查詢
test_queries = [
"貓砂還有嗎?",
"請問貓砂還有嗎?"
]
for query in test_queries:
print(f"\n查詢: '{query}'")
keywords, core_words = extract_keywords_fixed(query)
print(f" 核心詞彙: {core_words}")
print(f" 最終關鍵字: {keywords}")
# 檢查是否包含預期的關鍵字
if '貓砂' in keywords and '礦砂' in keywords:
print(" ✅ 包含預期的貓砂相關關鍵字")
else:
print(" ❌ 缺少預期的關鍵字")
def test_search_logic_simulation():
"""模擬搜尋邏輯"""
print(f"\n🔍 模擬搜尋邏輯")
print("=" * 50)
# 實際商品資料
products = [
{
"productName": "美國極冠貓砂 薰衣草12kg",
"productCode": "TL-03",
"stock": 48
},
{
"productName": "Shovel well豪好鏟 破碎型礦砂",
"productCode": "SW-06-01",
"stock": 50
}
]
# 修復後的關鍵字
keywords = ['貓砂', '礦砂', '豆腐砂', '水晶砂', '木屑砂', 'litter', '貓']
print(f"使用關鍵字: {keywords}")
matched_products = []
for product in products:
product_name_lower = product["productName"].lower()
product_code_lower = product["productCode"].lower()
# 檢查是否匹配任一關鍵字
for keyword in keywords:
keyword_lower = keyword.lower()
if (keyword_lower in product_name_lower or
keyword_lower in product_code_lower):
matched_products.append(product)
print(f"✅ 匹配: {product['productName']} (關鍵字: '{keyword}')")
break
print(f"\n總共匹配 {len(matched_products)} 個商品")
if len(matched_products) >= 2:
print("✅ 修復成功!應該能找到貓砂商品了")
else:
print("❌ 仍有問題需要進一步調試")
def main():
"""主函數"""
print("🚀 快速測試關鍵字提取修復")
print("=" * 60)
test_keyword_extraction_fix()
test_search_logic_simulation()
print("\n" + "=" * 60)
print("✅ 測試完成!")
print("\n💡 修復重點:")
print("1. search_products_advanced 現在使用 _extract_keywords 方法")
print("2. 不再直接使用 query_text.split()")
print("3. 應用 OR 邏輯搜尋條件")
print("4. 重啟服務後應該能正常工作")
if __name__ == "__main__":
main()
|