[spip-dev] Optimisation ?

Hello,

je suis en train de regarder ce qu'il faudrait modifier pour prendre
en compte dans le moteur de recherche les termes de 2 et 3 caractères
composés uniquement de majuscules et/ou chiffres.

Du coup, je regarde le source, bin oui ... :wink:

Dans 'ecrire/inc_index.php3', dans la fonction 'indexer_chaine()', je
suis tombé sur ça :

$table = split(" +([^ ]{0,$min_long} +)*", $texte);

Il serait sans doute moins coûteux d'avoir ça :

$table = split(" +([^ ]{1,$min_long} +)*", $texte);

Je cherche sans doute la petite bête, mais cela accepte aussi " "
comme chaine de split, et ça demande à priori moins de prise de tête
au moteur de regex ...

Et ne dites pas que je suis cinglé, je pourrais répondre par
l'affirmative !!! :wink:

-Nicolas

Dans 'ecrire/inc_index.php3', dans la fonction 'indexer_chaine()', je
suis tombé sur ça :

$table = split(" +([^ ]{0,$min_long} +)*", $texte);

Il serait sans doute moins coûteux d'avoir ça :

$table = split(" +([^ ]{1,$min_long} +)*", $texte);

Je cherche sans doute la petite bête, mais cela accepte aussi " "
comme chaine de split, et ça demande à priori moins de prise de tête au
moteur de regex ...

Effectivement, merci :wink:

Effectivement, merci :wink:

De rien ... :wink:

De toute façon, je simplifie encore cette expression pour ce que je
veux faire !!! :slight_smile:

A priori, pour indexer les termes en majuscules et/ou chiffres de 2 ou
3 caractères, il suffit de virer le strtolower() de la fonction
nettoyer_chaine_indexation() et de modifier la fonction
indexer_chaine() comme suit :

function indexer_chaine($texte, $val = 1, $min_long = 3) {
        global $index, $mots;

        $texte = nettoyer_chaine_indexation($texte);
        $regs = separateurs_indexation();
        $texte = strtr($texte, $regs, " ");
        $table = split(" +([^ ] +)*", $texte);
        while (list(, $mot) = each($table)) {
                if (strlen($mot) > $min_long || $mot == strtoupper($mot)) {
                        $h = substr(md5($mot), 0, 16);
                        $index[$h] += $val;
                        $mots .= ",(0x$h,'$mot')";
                }
        }
}

Je n'ai pas vérifié, c'est pure extrapolation.

Je continue ?

-Nicolas

A priori, pour indexer les termes en majuscules et/ou chiffres de 2
ou 3 caractères, il suffit [...]

"Il suffit", je ne doute vraiment de rien ... :wink:

En fait, ce que j'ai proposé ne va plus permettre de trouver
"Cependant" en cherchant "cependant", donc il faut améliorer.

- soit mettre tout en minuscules après le test
- soit mettre en minuscules uniquement les termes de plus de 3
  caractères

Une idée ?

-Nicolas