@@ -427,6 +427,9 @@ def build_and_store_artist_index(db_conn=None):
427427
428428 try :
429429 # Step 0: Load existing GMM params for incremental rebuild
430+ # Prefer single-row entry (backwards compatible). If not present, check for
431+ # segmented rows named ARTIST_INDEX_NAME_<part>_<total> and pick the
432+ # first non-empty `gmm_params_json` (prefer part 1).
430433 existing_gmm_params = None
431434 try :
432435 cur .execute ("""
@@ -435,9 +438,34 @@ def build_and_store_artist_index(db_conn=None):
435438 WHERE index_name = %s
436439 """ , (ARTIST_INDEX_NAME ,))
437440 row = cur .fetchone ()
441+
438442 if row and row [0 ]:
439443 existing_gmm_params = json .loads (row [0 ])
440- logger .info (f"Loaded existing GMM params for { len (existing_gmm_params )} artists (incremental mode)" )
444+ logger .info (f"Loaded existing GMM params for { len (existing_gmm_params )} artists (incremental mode, single-row)" )
445+ else :
446+ # Single-row not present or empty — look for segmented parts
447+ cur .execute ("SELECT index_name, artist_map_json, gmm_params_json FROM artist_index_data WHERE index_name LIKE %s" , (ARTIST_INDEX_NAME + "_%_%" ,))
448+ candidates = cur .fetchall ()
449+
450+ if candidates :
451+ seg_pattern = re .compile (rf"^{ re .escape (ARTIST_INDEX_NAME )} _(\d+)_(\d+)$" )
452+ selected_gmm_json = None
453+
454+ # Prefer part 1's metadata if present; otherwise take first non-empty
455+ for name , part_artist_map_json , part_gmm_params_json in candidates :
456+ m = seg_pattern .match (name )
457+ if not m :
458+ continue
459+ part_no = int (m .group (1 ))
460+ if part_no == 1 and part_gmm_params_json :
461+ selected_gmm_json = part_gmm_params_json
462+ break
463+ if not selected_gmm_json and part_gmm_params_json :
464+ selected_gmm_json = part_gmm_params_json
465+
466+ if selected_gmm_json :
467+ existing_gmm_params = json .loads (selected_gmm_json )
468+ logger .info (f"Loaded existing GMM params for { len (existing_gmm_params )} artists (incremental mode, segmented)" )
441469 except Exception as e :
442470 logger .warning (f"Could not load existing GMM params, will do full rebuild: { e } " )
443471 existing_gmm_params = None
0 commit comments