Changeset 82439 in spip-zone


Ignore:
Timestamp:
May 16, 2014, 10:14:08 AM (5 years ago)
Author:
marcimat@…
Message:

Lister les facettes d'une requête dans la clé facets de réponse

Location:
_plugins_/indexer/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/Sources/Articles.php

    r82421 r82439  
    4242         return new Document([
    4343            'id'           => $this->getObjectId('article', $article['id']),
    44             'title'        => $article['titre'],
     44            'title'        => supprimer_numero($article['titre']),
    4545            'summary'      => $article['surtitre'] . $article['soustitre'] . $article['chapo'],
    4646            'content'      => $article['texte'],
  • _plugins_/indexer/trunk/lib/Sphinx/SphinxQL.php

    r82375 r82439  
    5050        public function allfetsel($query) {
    5151                $liste = [
    52                         'docs' => [],
    53                         'meta' => []
     52                        'docs'   => [],
     53                        'facets' => []
     54                        'meta'   => [],
    5455                ];
    5556
    5657                if ($docs = $this->query($query)) {
     58                        // les jeux de réponses sont les suivant :
     59                        // 1) les documents trouvés
     60                        // 2+) les FACET à la suite
     61                        $reponses = [];
     62                         do {
     63                                $reponses[] = $docs->fetchAll(\PDO::FETCH_ASSOC);
     64                        } while ($docs->nextRowset());
     65
    5766                        $meta = $this->query('SHOW meta');
    58                         $liste['docs'] = $docs->fetchAll(\PDO::FETCH_ASSOC);
    59                         $liste['meta'] = $this->parseMeta($meta->fetchAll(\PDO::FETCH_ASSOC));
     67
     68                        $liste['docs']   = array_shift($reponses);
     69                        $liste['facets'] = $reponses;
     70                        $liste['meta']   = $this->parseMeta($meta->fetchAll(\PDO::FETCH_ASSOC));
    6071                }
    6172
  • _plugins_/indexer/trunk/lib/Sphinx/SphinxQLQuery.php

    r82437 r82439  
    7979    private $orderby = [];
    8080    private $limit   = '';
     81    private $facet   = [];
    8182
    8283    public function select($select) {
     
    111112    }
    112113
     114    public function facet($facet) {
     115        $this->facet[] = $facet;
     116        return $this;
     117    }
     118
    113119    public function quote($recherche) {
    114120        return _q($recherche);
     
    123129        if ($this->orderby)  $query[] = 'ORDER BY ' . implode(',', $this->orderby);
    124130        if ($this->limit)    $query[] = 'LIMIT '    . $this->limit;
     131        if ($this->facet)    $query[] = 'FACET '    . implode(' FACET ', $this->facet);
    125132        return implode(' ', $query);
    126133    }
  • _plugins_/indexer/trunk/prive/squelettes/contenu/indexer.html

    r82433 r82439  
    88
    99try {
    10 $indexer->registerStorage(
    11     new Indexer\Storage\Sphinx(
    12         new Sphinx\SphinxQL(SPHINX_SERVER_HOST, SPHINX_SERVER_PORT), SPHINX_DEFAULT_INDEX)
    13 );
     10    $indexer->registerStorage(
     11        new Indexer\Storage\Sphinx(
     12            new Sphinx\SphinxQL(SPHINX_SERVER_HOST, SPHINX_SERVER_PORT), SPHINX_DEFAULT_INDEX)
     13    );
    1414} catch( PDOException $e ) {
    1515    if (!$message = $e->getMessage())
Note: See TracChangeset for help on using the changeset viewer.