JairoCesar commited on
Commit
f314660
·
verified ·
1 Parent(s): 38d3c9c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -6
app.py CHANGED
@@ -686,12 +686,13 @@ def find_best_matches_hybrid(entities, data):
686
 
687
  def find_best_foodb_match(user_foods_es, foodb_index_keys, food_name_map):
688
  """
689
- Encuentra la mejor y única coincidencia de alimento en la base de datos de FoodB.
 
690
  """
691
  if not user_foods_es:
692
  return None
693
 
694
- # 1. Traducir y encontrar el término más específico (el más largo)
695
  search_terms_en = set()
696
  for food_es in user_foods_es:
697
  for key_es, value_en_list in food_name_map.items():
@@ -703,25 +704,30 @@ def find_best_foodb_match(user_foods_es, foodb_index_keys, food_name_map):
703
 
704
  sorted_terms = sorted(list(search_terms_en), key=len, reverse=True)
705
 
706
- # 2. Búsqueda por prioridades
707
- # Prioridad 1: Coincidencia perfecta
 
708
  for term in sorted_terms:
709
  for key in foodb_index_keys:
710
  if term == key.lower():
 
711
  return key
712
 
713
- # Prioridad 2: Coincidencia de inicio de palabra
714
  for term in sorted_terms:
715
  for key in foodb_index_keys:
716
  if key.lower().startswith(term):
 
717
  return key
718
 
719
- # Prioridad 3: Coincidencia general (contiene)
720
  for term in sorted_terms:
721
  for key in foodb_index_keys:
722
  if term in key.lower():
 
723
  return key
724
 
 
725
  return None # No se encontró ninguna coincidencia
726
 
727
  def generate_detailed_analysis(query, match):
 
686
 
687
  def find_best_foodb_match(user_foods_es, foodb_index_keys, food_name_map):
688
  """
689
+ Encuentra la mejor y única coincidencia de alimento en la base de datos de FoodB
690
+ utilizando un algoritmo de "embudo de especificidad".
691
  """
692
  if not user_foods_es:
693
  return None
694
 
695
+ # 1. Traducir y ordenar los términos de búsqueda del más al menos específico
696
  search_terms_en = set()
697
  for food_es in user_foods_es:
698
  for key_es, value_en_list in food_name_map.items():
 
704
 
705
  sorted_terms = sorted(list(search_terms_en), key=len, reverse=True)
706
 
707
+ # 2. Búsqueda por prioridades (Embudo de Especificidad)
708
+
709
+ # Prioridad 1: Coincidencia Perfecta
710
  for term in sorted_terms:
711
  for key in foodb_index_keys:
712
  if term == key.lower():
713
+ logger.info(f"Coincidencia Perfecta encontrada para '{term}': {key}")
714
  return key
715
 
716
+ # Prioridad 2: Coincidencia de Inicio de Palabra
717
  for term in sorted_terms:
718
  for key in foodb_index_keys:
719
  if key.lower().startswith(term):
720
+ logger.info(f"Coincidencia de Inicio encontrada para '{term}': {key}")
721
  return key
722
 
723
+ # Prioridad 3: Coincidencia General (contiene)
724
  for term in sorted_terms:
725
  for key in foodb_index_keys:
726
  if term in key.lower():
727
+ logger.info(f"Coincidencia General encontrada para '{term}': {key}")
728
  return key
729
 
730
+ logger.warning(f"No se encontró ninguna coincidencia molecular para los términos: {sorted_terms}")
731
  return None # No se encontró ninguna coincidencia
732
 
733
  def generate_detailed_analysis(query, match):