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()