Changeset f2cb64b


Ignore:
Timestamp:
08/31/10 17:29:41 (21 months ago)
Author:
Benoit Grégoire <benoitg@…>
Branches:
('master', '8434b8322dd6f8ff37c17bd45b94e7a826f86b53')('vitrine', 'afe109c61a407808bd54d88bcccb1cde726a010a')
Children:
e1377e9b1c55991030daa6cfbd72d3eae3dd5652
Parents:
adc28f645b270eff1c3aab9ec84933445c26b50b
git-author:
Benoit Grégoire <benoitg@coeus.ca>2010-08-31 17:28:40-04:00
git-committer:
Benoit Grégoire <benoitg@coeus.ca>2010-08-31 17:29:41-04:00
Message:

Test almost passes, need to fir recursion on leaves not being considered.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • html/classes/SearchEngine.php

    radc28f6 rf2cb64b  
    628628        if($navLevel==1) { 
    629629            $leftTable=$initialLeftTable; 
     630            $twoLevelDownLeftTable=null; 
     631        } 
     632        else if($navLevel==2){ 
     633            $leftTable='navigated_terms_level_'.(string)($navLevel-1); 
     634            $twoLevelDownLeftTable=$initialLeftTable; 
    630635        } 
    631636        else { 
    632637            $leftTable='navigated_terms_level_'.(string)($navLevel-1); 
    633         } 
     638            $twoLevelDownLeftTable='navigated_terms_level_'.(string)($navLevel-2); 
     639        } 
     640 
    634641        $leftTermIdCol=$leftTable.'.vdex_6_1_identifier'; 
    635642        $leftVocIdCol=$leftTable.'.vdex_4_vocabulary_identifier'; 
     
    691698        $selectListArray[] = "navigated_terms_level_{$navLevel}.vdex_4_vocabulary_identifier as l{$navLevel}_voc, navigated_terms_level_{$navLevel}.vdex_6_1_identifier as l{$navLevel}_term"; 
    692699 
     700        //Avoid loops 
     701        $avoidLoopsSql = null; 
     702        if($twoLevelDownLeftTable) { 
     703            //$selectListArray[] = "{$rightTable}.vdex_4_vocabulary_identifier as t1, {$twoLevelDownLeftTable}.vdex_4_vocabulary_identifier as t2, {$rightTable}.vdex_6_1_identifier as t3, {$twoLevelDownLeftTable}.vdex_6_1_identifier as t4"; 
     704            $avoidLoopsSql .= " AND \n"; 
     705            $avoidLoopsSql .= " ({$rightTable}.vdex_4_vocabulary_identifier!={$twoLevelDownLeftTable}.vdex_4_vocabulary_identifier\n"; 
     706            $avoidLoopsSql .= "   OR  {$rightTable}.vdex_6_1_identifier!={$twoLevelDownLeftTable}.vdex_6_1_identifier) \n"; 
     707        } 
     708 
    693709        $sqlVocTermJoin = null; 
    694710        $sqlVocTermJoin .= " LEFT JOIN vocabulary_terms AS {$rightTable} ON ( \n"; 
     711 
    695712        $sqlVocTermJoin .= " ({$rightTable}.vdex_4_vocabulary_identifier=\n"; 
    696713        $sqlVocTermJoin .= " (CASE \n"; 
    697         $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier \n"; 
    698         $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier \n"; 
    699         $sqlVocTermJoin .= " END) \n"; 
     714        $sqlVocTermJoin .= "   WHEN (navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier!=$leftVocIdCol) \n"; 
     715        $sqlVocTermJoin .= "    THEN navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier \n"; 
     716        $sqlVocTermJoin .= "   WHEN (navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier!=$leftVocIdCol) \n"; 
     717        $sqlVocTermJoin .= "    THEN navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier \n"; 
     718        $sqlVocTermJoin .= "  END) \n"; 
    700719 
    701720        $sqlVocTermJoin .= " AND  {$rightTable}.vdex_6_1_identifier= \n"; 
    702721        $sqlVocTermJoin .= " (CASE  \n"; 
    703         $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.target_term_identifier \n"; 
    704         $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.source_term_identifier \n"; 
    705         $sqlVocTermJoin .= " END)  \n"; 
     722        $sqlVocTermJoin .= "   WHEN (navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier!=$leftVocIdCol) \n"; 
     723        $sqlVocTermJoin .= "    THEN navigated_relationship_level_{$navLevel}.target_term_identifier \n"; 
     724        $sqlVocTermJoin .= "   WHEN (navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier!=$leftVocIdCol) \n"; 
     725        $sqlVocTermJoin .= "    THEN navigated_relationship_level_{$navLevel}.source_term_identifier \n"; 
     726        $sqlVocTermJoin .= "  END)  \n"; 
     727        $sqlVocTermJoin .= $avoidLoopsSql; 
     728 
     729 
    706730        $sqlVocTermJoin .= " ) \n"; 
    707731        //$sqlVocTermJoin .= " ) \n"; 
     
    713737                $vocIdcoalesceParts[]="{$table}.vdex_4_vocabulary_identifier"; 
    714738                $termIdcoalesceParts[]="{$table}.vdex_6_1_identifier"; 
     739                $finalJoinConditionParts[]="({$finalJoinTable}.vdex_4_vocabulary_identifier={$table}.vdex_4_vocabulary_identifier AND {$finalJoinTable}.vdex_6_1_identifier={$table}.vdex_6_1_identifier)"; 
    715740            } 
    716741            /* Re-joining with vocabulary_term is essential to exploit the nested-set structure later */ 
    717742            $selectListArray[] = "{$finalJoinTable}.vdex_4_vocabulary_identifier as final_voc, {$finalJoinTable}.vdex_6_1_identifier as final_term"; 
    718                     //$selectListArray[] = "array_agg(".implode(', ',$vocIdcoalesceParts).")"; 
     743            //$selectListArray[] = "array_agg(".implode(', ',$vocIdcoalesceParts).")"; 
    719744            $sqlFinalJoin = null; 
    720745            $sqlFinalJoin .= "  ON ( \n"; 
    721             $sqlFinalJoin .= " {$finalJoinTable}.vdex_4_vocabulary_identifier=\n"; 
    722             $sqlFinalJoin .= " COALESCE(".implode(', ',$vocIdcoalesceParts).") \n"; 
    723             $sqlFinalJoin .= " AND  {$finalJoinTable}.vdex_6_1_identifier= \n"; 
    724             $sqlFinalJoin .= " COALESCE(".implode(', ',$termIdcoalesceParts).") \n"; 
     746            /*$sqlFinalJoin .= " {$finalJoinTable}.vdex_4_vocabulary_identifier=\n"; 
     747             $sqlFinalJoin .= " COALESCE(".implode(', ',$vocIdcoalesceParts).") \n"; 
     748             $sqlFinalJoin .= " AND  {$finalJoinTable}.vdex_6_1_identifier= \n"; 
     749             $sqlFinalJoin .= " COALESCE(".implode(', ',$termIdcoalesceParts).") \n";*/ 
     750            $sqlFinalJoin .= implode("\n OR ",$finalJoinConditionParts); 
    725751            $sqlFinalJoin .= " ) \n"; 
    726752            $sql .= $sqlFinalJoin; 
     
    750776        global $NAVIGATE_VOC_RELATIONS_ENABLED; 
    751777        if($NAVIGATE_VOC_RELATIONS_ENABLED) { 
    752             $debug=true; 
     778            $debug=false; 
    753779            if($debug) { 
    754780                $db = AbstractDb::getObject(); 
     
    760786                $sql .= " FROM \n"; 
    761787                $sql .= $sqlJoin; 
    762                 $sql .= " WHERE initial_theme_limit_terms.vdex_4_vocabulary_identifier='rVoc1' AND initial_theme_limit_terms.vdex_6_1_identifier='rVoc1T2'\n"; 
     788                $sql .= " WHERE initial_theme_limit_terms.vdex_4_vocabulary_identifier='rVoc1' AND initial_theme_limit_terms.vdex_6_1_identifier='rVoc1T2' ORDER BY final_term\n"; 
    763789                //$sql .= " WHERE vocabulary_terms.vdex_4_vocabulary_identifier='pivotVoc' AND vocabulary_terms.vdex_6_1_identifier='pivotVocT3'\n"; 
    764790                pretty_print_r($sql);@ob_flush();flush(); 
     
    769795            $sqlJoin=null; 
    770796 
    771             self::getSqlLomThemeJoinHelper(1, 'initial_theme_limit_terms', 'theme_limit_terms', $sqlJoin, $selectListArray, true, false); 
     797            self::getSqlLomThemeJoinHelper(2, 'initial_theme_limit_terms', 'theme_limit_terms', $sqlJoin, $selectListArray, true, false); 
    772798 
    773799            $retval .= " $sqlJoin \n"; 
Note: See TracChangeset for help on using the changeset viewer.