Changeset 58988 in spip-zone


Ignore:
Timestamp:
Mar 1, 2012, 9:10:40 PM (9 years ago)
Author:
cedric@…
Message:

r57905 avait bien optimisé les perf des requetes de recherche fulltext, mais au prix d'une perte de fonctionnalité car la requete résultante perdait plein de résultats.
On devrait cette fois retrouver les résultats antérieurs combinés avec une meilleure perf que les multiples left join enchainés d'origine

Location:
_plugins_/fulltext
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fulltext/inc/recherche_to_array.php

    r57905 r58988  
    139139                        spip_log($pe,'recherche');
    140140                        if ($mkeys = fulltext_keys($jtable, 'obj'.$i, $serveur)) {
    141                                 $score[] = "SUM(MATCH(".implode($mkeys,',').") AGAINST ($p".($boolean ?' IN BOOLEAN MODE':'')."))";
     141                                $score[] = "IF(SUM(o".$i.".score) IS NULL,0,SUM(o".$i.".score))";
    142142                                $_id_join = id_table_objet($jtable);
    143143                                $table_join = table_objet($jtable);
    144144                                $lesliens = recherche_tables_liens();
     145
     146                                $subscore = "MATCH(".implode($mkeys,',').") AGAINST ($p".($boolean ?' IN BOOLEAN MODE':'').")";
    145147                                if (in_array($jtable, $lesliens))
    146148                                        $from .= "
    147                                         LEFT JOIN spip_${jtable}s_liens as lien$i ON lien$i.id_objet=t.$_id_table AND lien$i.objet='${table}'
    148                                         INNER JOIN spip_${jtable}s as obj$i ON obj$i.$_id_join=lien$i.$_id_join
     149                                        LEFT JOIN (
     150                                         SELECT lien$i.id_objet,$subscore AS score
     151                                         FROM spip_${jtable}s_liens as lien$i
     152                                         JOIN spip_${jtable}s as obj$i ON obj$i.$_id_join=lien$i.$_id_join
     153                                         WHERE lien$i.objet='${table}' ) AS o$i ON o$i.id_objet=t.$_id_table
    149154                                        ";
    150155                                else
    151156                                        $from .= "
    152                                         LEFT JOIN spip_${jtable}s_${table}s as lien$i ON lien$i.$_id_table=t.$_id_table
    153                                         INNER JOIN spip_${table_join} AS obj$i ON lien$i.$_id_join=obj$i.$_id_join
     157                                        LEFT JOIN (
     158                                         SELECT lien$i.$_id_table,$subscore AS score
     159                                         FROM spip_${jtable}s_${table}s as lien$i
     160                                         JOIN spip_${table_join} AS obj$i ON lien$i.$_id_join=obj$i.$_id_join
     161                                         ) AS o$i ON o$i.$_id_table=t.$_id_table
    154162                                        ";
    155163                        }
     
    195203                #var_dump($requete);
    196204                #spip_log($requete,'recherche');
    197 #                       exit;
     205                #exit;
    198206        }
    199207
  • _plugins_/fulltext/paquet.xml

    r57905 r58988  
    22        prefix="fulltext"
    33        categorie="navigation"
    4         version="0.6.8"
     4        version="0.6.9"
    55        etat="dev"
    66        compatibilite="[2.0.0;3.0.99]"
  • _plugins_/fulltext/plugin.xml

    r57905 r58988  
    88        </slogan>
    99        <auteur>Fil, Gael Chareyre</auteur>
    10         <version>0.6.8</version>
     10        <version>0.6.9</version>
    1111        <version_base>0.2</version_base>
    1212        <etat>dev</etat>
Note: See TracChangeset for help on using the changeset viewer.