[spip-dev] Problème de recherche

La recherche sur des mots de 3 caractères ne fonctionne que sur les
brèves et les sites. Pas sur les articles.

Impossible de trouver la cause. Non indexation ? Erreur dans la
recherche ? Etonnant, les fonctions de recherche et d'indexation sur les
articles et les brèves ont l'air similaires.

Précision : j'ai testé aussi avec les squelettes standard de ce jour et
la release de ce jour.

Oui, mais non. Ca a été corrigé, et maintenant spip indexe aussi les
mots de 3 lettres. Mais aparemment, la recherche ne se fait pas
correctemnt (la recherche dans l'espace privé, elle, passe
correctement).

Rien vu de bizarre dans inc-calcul-skel, mais sans spec avancées,
difficile de mettre les pattes là dedans...

Oui, mais non. Ca a été corrigé, et maintenant spip indexe aussi les
mots de 3 lettres. Mais aparemment, la recherche ne se fait pas
correctemnt (la recherche dans l'espace privé, elle, passe
correctement).

Chez moi ça marche, aussi bien en tapant OGM qu'ogm (majuscules et
minuscules)

-- Fil

Chez moi ça marche, aussi bien en tapant OGM qu'ogm (majuscules et
minuscules)

la preuve : Search results - Le Monde diplomatique - English edition

-- Fil

Oui mais ce que veut dire Gaétan c'est çà :

http://clx.anet.fr/spip/recherche.php3?recherche=gpg

et là tous les articles inclus dans
http://clx.anet.fr/spip/rubrique.php3?id_rubrique=21 devraient sortir
théoriquement, or çà marche pô :frowning:

Mais çà marche bien dans
http://clx.anet.fr/spip/ecrire/recherche.php3?recherche=gpg

Curieux n'est-il pas ?
Gaétan, je te sers Kwak et on en parle plus ? :slight_smile:

Oui mais ce que veut dire Gaétan c'est çà :
http://clx.anet.fr/spip/recherche.php3?recherche=gpg
et là tous les articles inclus dans
http://clx.anet.fr/spip/rubrique.php3?id_rubrique=21 devraient sortir
théoriquement, or çà marche pô :frowning:

Tiens, celui-ci fonctionne :
http://clx.anet.fr/spip/recherche.php3?recherche=mid

Il faut peut-être penser à (attendre que le site ait fini de se) réindexer ?
Pour voir la progression de la réindexation, ecrire/data/spip.log et
ecrire/data/.index

-- Fil

Je viré l'nidexation, et réindexé manuellement tout le site (refresh,
refrehs, refresh...)

Actuellement, tous les articles sont indexés, mais pas encore les
brèves. Aucune recherche n'aboutit, ie. les articles ne sortent pas sur
l'espace public, alors qu'ils srtoent sur l'espace privé.

'autre part, y aurait-il moyen de pndre une page rapide de réindex par
lots ? Genre ecrire/forcer-index.php3, avec un troupeu
d'articles+brtèves+mots à réindexer, avec une alerte qui dirait "si vous
avez une erreur, c'est normal. Faites un refresh". Non ?

Allez, je fournit même le code :

<?php

include ("ecrire/inc_version.php3");
$dir_ecrire = 'ecrire/';
include_local ("inc-cache.php3");

$max_index=20;

//
// Authentification
//

if ($HTTP_COOKIE_VARS['spip_session'] OR $PHP_AUTH_USER) {
        include_ecrire ("inc_session.php3");
        verifier_visiteur();
}

//
// Reindex manuelle
//

if (lire_meta('activer_moteur') == 'oui') {

   for ($iter_index=0; $iter_index<$max_index; $iter_index++) {

        $fichier_index = 'ecrire/data/.index';
        if ($db_ok) {
                include_ecrire("inc_index.php3");
                $s = '';
                if ($id_article AND !deja_indexe('article',
$id_article))
                        $s .= "article $id_article\n";
                if ($id_auteur AND !deja_indexe('auteur', $id_auteur))
                        $s .= "auteur $id_auteur\n";
                if ($id_breve AND !deja_indexe('breve', $id_breve))
                        $s .= "breve $id_breve\n";
                if ($id_mot AND !deja_indexe('mot', $id_mot))
                        $s .= "mot $id_mot\n";
                if ($id_rubrique AND !deja_indexe('rubrique',
$id_rubrique))
                        $s .= "rubrique $id_rubrique\n";
                if ($s) {
                        $f = fopen($fichier_index, 'a');
                        fputs($f, $s);
                        fclose($f);
                }
        }
        if (!$timeout AND $use_cache AND file_exists($fichier_index) AND
filesize($fichier_index)) {
                include_ecrire("inc_connect.php3");
                if ($db_ok) {
                        include_ecrire("inc_texte.php3");
                        include_ecrire("inc_filtres.php3");
                        include_ecrire("inc_index.php3");
                        $suite = file($fichier_index);
                        $s = $suite[0];
                        $f = fopen($fichier_index, 'w');
                        while (list(,$ligne) = each($suite))
                                if ($ligne <> $s)
                                        fwrite($f, $ligne);
                        fclose($f);
                        $s = explode(' ', trim($s));
                        spip_log("indexation $s[0] $s[1]");
                        indexer_objet($s[0], $s[1], false);
                        $timeout = true;
                }
        }
   }
}

?>

Pâle repompage de inc-public-global.php3

Actuellement, tous les articles sont indexés, mais pas encore les
brèves. Aucune recherche n'aboutit, ie. les articles ne sortent pas sur
l'espace public, alors qu'ils srtoent sur l'espace privé.

grmblgrmbl. J'ai fais un cvs update (j'étais pourtant sur la cvs d'il y
a 2 jours), et ça passe. Marrant... je ne vois pas ce qui a corrgié le
problème dans les commit cvs récents.

Allez, je fournit même le code :

(foireux). Mais je maintient que ce serait une bonne idée de pouvoir faire une
passe d'indexation manuelle.

V'la mon bout de script à mettre en forme.

ecrire/force_index.php3

<?php

include ("inc_version.php3");
$dir_ecrire = './';
include_local ("../inc-cache.php3");

$max_index=20;

?><h3>Indexation manuelle du site</H3>
Indexation de <?php echo $max_index ?> sites :
<ul>
<?php
//
// Authentification
//

if ($HTTP_COOKIE_VARS['spip_session'] OR $PHP_AUTH_USER) {
        include_ecrire ("inc_session.php3");
        verifier_visiteur();
}

//
// Reindex manuelle
//

if (lire_meta('activer_moteur') == 'oui') {

   for ($iter_index=1; $iter_index<=$max_index; $iter_index++) {

        $fichier_index = 'data/.index';
        if ($db_ok) {
                include_ecrire("inc_index.php3");
                $s = '';
                if ($id_article AND !deja_indexe('article', $id_article))
                        $s .= "article $id_article\n";
                if ($id_auteur AND !deja_indexe('auteur', $id_auteur))
                        $s .= "auteur $id_auteur\n";
                if ($id_breve AND !deja_indexe('breve', $id_breve))
                        $s .= "breve $id_breve\n";
                if ($id_mot AND !deja_indexe('mot', $id_mot))
                        $s .= "mot $id_mot\n";
                if ($id_rubrique AND !deja_indexe('rubrique', $id_rubrique))
                        $s .= "rubrique $id_rubrique\n";
                if ($s) {
                        $f = fopen($fichier_index, 'a');
                        fputs($f, $s);
                        fclose($f);
                }
        }
        if (file_exists($fichier_index) AND filesize($fichier_index)) {
                include_ecrire("inc_connect.php3");
                if ($db_ok) {
                        include_ecrire("inc_texte.php3");
                        include_ecrire("inc_filtres.php3");
                        include_ecrire("inc_index.php3");
                        $suite = file($fichier_index);
                        $s = $suite[0];
                        $f = fopen($fichier_index, 'w');
                        while (list(,$ligne) = each($suite))
                                if ($ligne <> $s)
                                        fwrite($f, $ligne);
                        fclose($f);
                        $s = explode(' ', trim($s));
            echo "<li>$iter_index : $s[0] $s[1]</li>\n";
                        spip_log("indexation $s[0] $s[1]");
                        indexer_objet($s[0], $s[1], false);
                        $timeout = true;
                }
        }
   }
}

echo "</ul>\nIndexation achevée.\n";
?>