seawolf2357 commited on
Commit
3db3d12
·
verified ·
1 Parent(s): c191368

Update file_api.py

Browse files
Files changed (1) hide show
  1. file_api.py +21 -6
file_api.py CHANGED
@@ -355,11 +355,27 @@ def fetch_with_cache(category: str = "전체", region: str = "전체(지역)", k
355
  # 캐시가 비어있으면 API에서 가져오기
356
  return fetch_all_from_api(category, region, keyword)
357
 
358
- # 키워드 검색 (벡터 검색)
359
  if keyword and keyword.strip():
360
- cache = get_cache()
361
- items = cache.search(keyword.strip(), n_results=500)
362
- status = f"🔍 캐시에서 '{keyword}' 검색"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
 
364
  # 필터 적용 (캐시 데이터에서 필터링)
365
  filtered = items
@@ -621,5 +637,4 @@ def fetch_announcement_detail(url: str) -> Tuple[str, List[Dict], Optional[Dict]
621
 
622
  except Exception as e:
623
  import traceback
624
- return f"상세 정보 조회 실패: {str(e)}\n{traceback.format_exc()}", [], None
625
-
 
355
  # 캐시가 비어있으면 API에서 가져오기
356
  return fetch_all_from_api(category, region, keyword)
357
 
358
+ # 키워드 검색 (텍스트 매칭 - 한국어 정확도 보장)
359
  if keyword and keyword.strip():
360
+ kw = keyword.strip().lower()
361
+ kw_terms = [t.strip() for t in kw.replace(",", " ").split() if t.strip()]
362
+ matched = []
363
+ for item in items:
364
+ # 검색 대상 텍스트 결합
365
+ search_text = " ".join([
366
+ str(item.get("title", "") or item.get("pblancNm", "") or ""),
367
+ str(item.get("description", "") or item.get("bsnsSumryCn", "") or ""),
368
+ str(item.get("author", "") or item.get("jrsdInsttNm", "") or ""),
369
+ str(item.get("lcategory", "") or item.get("pldirSportRealmLclasCodeNm", "") or item.get("category", "") or ""),
370
+ str(item.get("hashTags", "") or ""),
371
+ str(item.get("trgetNm", "") or item.get("target", "") or ""),
372
+ str(item.get("excInsttNm", "") or ""),
373
+ ]).lower()
374
+ # 모든 키워드 term이 포함되어야 매칭 (AND 조건)
375
+ if all(t in search_text for t in kw_terms):
376
+ matched.append(item)
377
+ items = matched
378
+ status = f"🔍 '{keyword}' 검색 ({len(items)}건 매칭)"
379
 
380
  # 필터 적용 (캐시 데이터에서 필터링)
381
  filtered = items
 
637
 
638
  except Exception as e:
639
  import traceback
640
+ return f"상세 정보 조회 실패: {str(e)}\n{traceback.format_exc()}", [], None