Changeset 80391 in spip-zone


Ignore:
Timestamp:
Feb 1, 2014, 8:10:55 PM (6 years ago)
Author:
renato@…
Message:

mettre en WHERE la clausole MATCH ... AGAINST pour utiliser l'index fulltext et avoir une requête peut-être moins lourde

File:
1 edited

Legend:

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

    r69055 r80391  
    100100                // de la table
    101101                $score = array();
     102                $full_text_where = array();
    102103                foreach ($keys as $name => $key) {
    103104                        $val = "MATCH($key) AGAINST ($p)";
     105                        $val_where = $val;
    104106                        // Une chaine exacte rapporte plein de points
    105107                        if ($pe)
     
    126128
    127129                        // si symboles booleens les prendre en compte
    128                         if ($boolean = preg_match(', [+-><~]|\* |".*?",', " $r "))
     130                        if ($boolean = preg_match(', [+-><~]|\* |".*?",', " $r ")) {
    129131                                $val = "MATCH($key) AGAINST ($p IN BOOLEAN MODE) * $mult";
     132                                $val_where = "MATCH($key) AGAINST ($p IN BOOLEAN MODE)";
     133                        }
     134                        $full_text_where[] = $val_where;
    130135                        $score[] = $val;
    131136                }
     
    175180                // si on define(_FULLTEXT_WHERE_$table,'date>"2000")
    176181                // cette contrainte est ajoutee ici:)
    177                 $requete['WHERE'] = array();
     182                $requete['WHERE'] = $full_text_where;
    178183                if (defined('_FULLTEXT_WHERE_'.$table))
    179184                        $requete['WHERE'][] = constant('_FULLTEXT_WHERE_'.$table);
Note: See TracChangeset for help on using the changeset viewer.