@@ -507,32 +507,28 @@ def set_pandascore_service
507507 # 2. Prefix wildcard on first word, case-insensitive (handles suffix differences
508508 # between sources, e.g. PandaScore "RED Academy" vs Leaguepedia "RED Kalunga Academy")
509509 def team_clause ( name , field )
510- prefix = name . split . first . to_s
511- {
512- bool : {
513- should : [
514- { term : { "#{ field } .name" => name } } ,
515- { wildcard : { "#{ field } .name" => { value : "#{ prefix } *" , case_insensitive : true } } }
516- ] ,
517- minimum_should_match : 1
518- }
519- }
510+ clauses = [ { term : { "#{ field } .name" => name } } ]
511+
512+ # Wildcard only for multi-word names to handle sponsor suffixes (e.g. "FlyQuest NZXT").
513+ # Uses the full name as prefix to avoid false matches ("Team" would hit "Team WE").
514+ if name . split . length > 1
515+ clauses << { wildcard : { "#{ field } .name" => { value : "#{ name } *" , case_insensitive : true } } }
516+ end
517+
518+ { bool : { should : clauses , minimum_should_match : 1 } }
520519 end
521520
522521 # Matches win_team using the same prefix-wildcard logic as team_clause.
523522 # Needed because PandaScore names have sponsor suffixes (e.g. "FlyQuest NZXT")
524523 # while Oracle's Elixir stores the base name ("FlyQuest").
525524 def win_team_clause ( name )
526- prefix = name . split . first . to_s
527- {
528- bool : {
529- should : [
530- { term : { win_team : name } } ,
531- { wildcard : { win_team : { value : "#{ prefix } *" , case_insensitive : true } } }
532- ] ,
533- minimum_should_match : 1
534- }
535- }
525+ clauses = [ { term : { win_team : name } } ]
526+
527+ if name . split . length > 1
528+ clauses << { wildcard : { win_team : { value : "#{ name } *" , case_insensitive : true } } }
529+ end
530+
531+ { bool : { should : clauses , minimum_should_match : 1 } }
536532 end
537533
538534 def apply_filters ( matches )
0 commit comments