Changeset 82455 in spip-zone


Ignore:
Timestamp:
May 16, 2014, 3:09:19 PM (5 years ago)
Author:
marcimat@…
Message:

Petite inclure de facette, et page indexer avec des liens

Location:
_plugins_/indexer/trunk
Files:
4 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/aside/sphinx.html

    r82443 r82455  
    22
    33
    4 [(#REM)
    54
    6         Facette par JSON multivalué
    75
    8 ]
    9 [(#SET{sqlf, [(#ENV{source,spip}|sphinx_get_query_facette_auteurs{#ENV*{recherche},#ENV*{tag},#ENV*{auteur}})]})]
     6[(#INCLURE{fond=inclure/liste_sphinx_facette, env,
     7    facette=properties.authors,
     8    cle=auteur,
     9    titre=Liste des auteurs,
     10    texte_vide=Aucun auteur
     11})]
     12
     13
     14[(#INCLURE{fond=inclure/liste_sphinx_facette, env,
     15    facette=properties.tags,
     16    cle=tag,
     17    titre=Liste des tags,
     18    texte_vide=Aucun tag
     19})]
     20
     21[(#INCLURE{fond=inclure/liste_sphinx_facette, env,
     22    facette=YEAR(properties.times.publication),
     23    cle=annee,
     24    titre=Par année,
     25    texte_vide=Non renseignée
     26})]
    1027
    1128
    1229
    13 <BOUCLE_facettes_auteurs(DATA) {source SphinxQL, #GET{sqlf}} {si #ENV{recherche}}>
    14         <B_facette_auteurs>
    15             <h2>Liste des auteurs</h2>
    16         <BOUCLE_facette_auteurs(DATA){source tableau, #VALEUR}{si #CLE|=={docs}}>
    17             <a href="[(#SELF|parametre_url{auteur,[(#VALEUR{facette}|sinon{-})]})]">[(#VALEUR{facette}|sinon{<i>sans tag</i>})]</a> (#VALEUR{c} documents)<br />
    18         </BOUCLE_facette_auteurs>
    19         </B_facette_auteurs>
    20 
    21 
    22         <B_meta_facette_auteurs>
    23             <h2>Métas associées</h2>
    24             <dl>
    25         <BOUCLE_meta_facette_auteurs(DATA){source tableau, #VALEUR}{si #CLE|=={meta}}>
    26                 [<dt>(#CLE)</dt>]
    27                 [<dt><pre>(#VALEUR*|print_r{1})</pre></dt>]
    28         </BOUCLE_meta_facette_auteurs>
    29             </dl>
    30         </B_meta_facette_auteurs>
    31 
    32 
    33 </BOUCLE_facettes_auteurs>
  • _plugins_/indexer/trunk/indexer_fonctions.php

    r82452 r82455  
    6060    return $sq->get();
    6161}
     62
     63
     64function sphinx_get_query_facette($index, $facette, $cle, $recherche, $orderby = 'c DESC', $limit = 30) {
     65    include_spip('inc/indexer');
     66    $sq = new \Sphinx\SphinxQLQuery();
     67    $sq
     68        ->select('COUNT(*) AS c')
     69        ->select('GROUPBY() AS facette')
     70        ->from($index)
     71        ->where("MATCH(" . $sq->quote($recherche) . ")")
     72        ->orderby("c DESC")
     73        ->limit($limit)
     74        ;
     75    // facette simple 'properties.tags'
     76    if (strpos($facette, '(') === false) {
     77        $sq->groupby($facette);
     78    }
     79    // facette avec calcul 'YEAR(properties.dates.publication)'
     80    else {
     81        $sq->select("$facette AS data");
     82        $sq->groupby("data");
     83    }
     84
     85    return $sq->get();
     86}
  • _plugins_/indexer/trunk/lib/Sphinx/SphinxQL.php

    r82440 r82455  
    6969                        $liste['facets'] = $reponses;
    7070                        $liste['meta']   = $this->parseMeta($meta->fetchAll(\PDO::FETCH_ASSOC));
     71                } elseif ($errs = $this->sql->errorInfo()) {
     72                        var_dump($errs);
    7173                }
    7274
  • _plugins_/indexer/trunk/prive/exec/indexer.html

    r82390 r82455  
    11
    22[(#INCLURE{fond=prive/squelettes/contenu/indexer,env})]
     3
     4<!--#navigation-->
     5[(#INCLURE{fond=prive/squelettes/navigation/indexer,env})]
     6<!--/#navigation-->
  • _plugins_/indexer/trunk/prive/squelettes/contenu/indexer.html

    r82439 r82455  
    33<?php
    44
    5 include_spip('inc/indexer');
     5if (_request('run') || _request('continue')) {
     6    include_spip('inc/indexer');
     7    $indexer = new Indexer\Indexer();
    68
    7 $indexer = new Indexer\Indexer();
     9    try {
     10        $indexer->registerStorage(
     11            new Indexer\Storage\Sphinx(
     12                new Sphinx\SphinxQL(SPHINX_SERVER_HOST, SPHINX_SERVER_PORT), SPHINX_DEFAULT_INDEX)
     13        );
     14    } catch( PDOException $e ) {
     15        if (!$message = $e->getMessage())
     16            $message = _L('Erreur inconnue');
     17        die("<p class='erreur'>$message</p>");
     18    }
    819
    9 try {
    10     $indexer->registerStorage(
    11         new Indexer\Storage\Sphinx(
    12             new Sphinx\SphinxQL(SPHINX_SERVER_HOST, SPHINX_SERVER_PORT), SPHINX_DEFAULT_INDEX)
    13     );
    14 } catch( PDOException $e ) {
    15     if (!$message = $e->getMessage())
    16         $message = _L('Erreur inconnue');
    17     die("<p class='erreur'>$message</p>");
     20    $sources = new Indexer\Sources\Sources();
     21    $sources->register('articles', new Spip\Indexer\Sources\Articles());
     22    $sources = pipeline('indexer_sources', $sources);
     23
     24    $SpipSourcesIndexer = new Spip\Indexer\Sources\SpipSourcesIndexer($indexer, $sources);
     25    $SpipSourcesIndexer->setTablesLiensAuto();
     26
     27    if (_request('run')) {
     28        $SpipSourcesIndexer->resetIndexesStats();
     29    }
     30    $res = $SpipSourcesIndexer->indexAll();
     31
     32    if (!$res) {
     33        echo "\n<br/><a href='#SELF'>Recharger la page pour continuer l'indexation</a>";
     34        echo "<script type='text/javascript'>window.location.reload();</script>";
     35    } else {
     36        echo "\n<pre>"; print_r($res); echo "</pre>";
     37    }
    1838}
    19 
    20 $sources = new Indexer\Sources\Sources();
    21 $sources->register('articles', new Spip\Indexer\Sources\Articles());
    22 $sources = pipeline('indexer_sources', $sources);
    23 
    24 $SpipSourcesIndexer = new Spip\Indexer\Sources\SpipSourcesIndexer($indexer, $sources);
    25 $SpipSourcesIndexer->setTablesLiensAuto();
    26 
    27 $res = $SpipSourcesIndexer->indexAll();
    28 
    29 if (!$res) {
    30     echo "\n<br/><a href='#SELF'>Recharger la page pour continuer l'indexation</a>";
    31     echo "<script type='text/javascript'>window.location.reload();</script>";
    32 } else {
    33     echo "\n<pre>"; print_r($res); echo "</pre>";
    34 }
    35 
Note: See TracChangeset for help on using the changeset viewer.