/**
  * Assigns relevancy to all visible terms
  * NOTE: This is inefficient because it requires an additional pass through ALL concepts.
  * Probably better to replace this with individual SQL queries 
  */
 private function _assignRelevancy(ConceptSearchResultsGroup $csrg)
 {
     // Prepare arrays of search terms used to assign concept relevancy
     $ctsc = $csrg->csg->getSearchTermCollection();
     $arr_numeric_term_type = array(MCL_SEARCH_TERM_TYPE_UUID, MCL_SEARCH_TERM_TYPE_CONCEPT_ID, MCL_SEARCH_TERM_TYPE_CONCEPT_ID_RANGE, MCL_SEARCH_TERM_TYPE_MAP_CODE);
     $arr_numeric_search_term = $ctsc->getSearchTerms($arr_numeric_term_type, null, true);
     $arr_text_term_type = array(MCL_SEARCH_TERM_TYPE_TEXT, MCL_SEARCH_TERM_TYPE_CONCEPT_NAME);
     $arr_text_search_term = $ctsc->getSearchTerms($arr_text_term_type, null, true);
     // Iterate through each dictionary source in the group
     foreach ($csrg->getDictionarySources() as $dict_key) {
         // Iterate through concepts in the current dictionary source
         $arr_concept_id = $csrg->getVisibleConceptIds($dict_key);
         foreach ($arr_concept_id as $_concept_id) {
             // Get the concept and relevancy
             $c = $csrg->getConcept($_concept_id, $dict_key);
             $relevancy = $csrg->getRelevancy($c);
             // Bump up relevancy for exact matches: CONCEPT_ID, ID RANGES, MAP_CODE, UUID
             if ($relevancy < MCL_MAX_RELEVANCY) {
                 foreach ($arr_numeric_search_term as $search_term) {
                     if ($search_term->isMatch($c)) {
                         $relevancy = MCL_MAX_RELEVANCY;
                         break;
                     }
                 }
             }
             // Bump up exact name matches: TEXT, NAME
             if ($relevancy < MCL_MAX_RELEVANCY) {
                 // loop through each concept name
                 foreach ($c->getConceptNameIds() as $concept_name_id) {
                     $concept_name = $c->getConceptName($concept_name_id)->name;
                     if (str_word_count($concept_name) !== count($arr_text_search_term)) {
                         break;
                     }
                     $match = true;
                     foreach ($arr_text_search_term as $search_term) {
                         if (!$search_term->isMatch($c, MCL_SEARCH_TERM_TYPE_CONCEPT_NAME)) {
                             $match = false;
                             break;
                         }
                     }
                     if ($match) {
                         $relevancy = MCL_MAX_RELEVANCY;
                         break;
                     }
                 }
             }
             // Set relevancy
             $csrg->setRelevancy($c, $relevancy);
         }
         // End concept loop
     }
     // End dictionary source loop
 }