Ignore:
Timestamp:
Jun 11, 2014, 12:46:20 PM (7 years ago)
Author:
cedric@…
Message:

calcul des scores : on pondère le nombre d'occurence par une fonction inverse a la longueur du contenu (avoir 10 occurences dans un contenu fleuve n'est pas forcément plus pertinent que 2 occurences dans un contenu court)
Cette modification n'intervient que si pas de fulltext ou si on a activé l'option _FULLTEXT_FIELD_SCORE

File:
1 edited

Legend:

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

    r82957 r82959  
    154154
    155155                                        if (in_array($jtable, $lesliens))
    156                                                 $from .= "
     156                                                $join = "
    157157                                                LEFT JOIN (
    158158                                                 SELECT lien$i.id_objet,$subscore AS score
     
    165165                                                ";
    166166                                        else
    167                                                 $from .= "
     167                                                $join = "
    168168                                                LEFT JOIN (
    169169                                                 SELECT lien$i.$_id_table,$subscore AS score
     
    174174                                                 ) AS o$i ON o$i.$_id_table=t.$_id_table
    175175                                                ";
     176                                        #var_dump($join);
     177                                        $from .= $join;
    176178                                }
    177179                        }
     
    184186                // cette contrainte est ajoutee ici:)
    185187                $requete['WHERE'] = $full_text_where;
     188                $requete['WHERE'] = array();
    186189                if (defined('_FULLTEXT_WHERE_'.$table))
    187190                        $requete['WHERE'][] = constant('_FULLTEXT_WHERE_'.$table);
     
    268271                                                        $champs_vus[$champ] = $t[$champ];
    269272                                                if ($options['score'])
    270                                                         $score += $n * $poids;
     273                                                        // on pondere le nombre d'occurence par une fonction inverse de la longueur du contenu
     274                                                        // 1 = 1 occurence pour 200 mots de 8 lettres = 1600 signes
     275                                                        $score += $n * $poids * sqrt(sqrt(1600/strlen($t[$champ])));
    271276                                                if ($options['matches'])
    272277                                                        $matches[$champ] = $regs;
Note: See TracChangeset for help on using the changeset viewer.