Changeset 82466 in spip-zone


Ignore:
Timestamp:
May 16, 2014, 4:56:48 PM (5 years ago)
Author:
rastapopoulos@…
Message:

Correction de l'api tableau.
+ un filtre pour appeler l'api tableau
+ un exemple de génération de requête dans le squelette

Location:
_plugins_/indexer/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/indexer_fonctions.php

    r82465 r82466  
    11<?php
    22
    3 
     3function sphinx_get_array2query($query_description, $limit=''){
     4        include_spip('inc/indexer');
     5        $sq = new \Sphinx\SphinxQLQuery($query_description);
     6        if ($limit){ $sq->limit($limit); }
     7       
     8        return $sq->get();
     9}
    410
    511/**
  • _plugins_/indexer/trunk/lib/Sphinx/SphinxQLQuery.php

    r82463 r82466  
    171171                                                $comparisons = array();
    172172                                                foreach ($filter['values'] as $value){
    173                                                         $comparisons[] = $filter['not'] ? '!':'' . '(' . $filter['field'] . $filter['comparison'] . $this->quote($value) . ')';
     173                                                        $comparisons[] = ($filter['not'] ? '!':'') . '(' . $filter['field'] . $filter['comparison'] . $this->quote($value) . ')';
    174174                                                }
    175175                                                if ($comparisons){
     
    191191                                               
    192192                                                // For each values, we build an "in" select
    193                                                 $where_ins = array();
    194                                                 foreach ($filter['values'] as $value){
    195                                                         $this->select(
    196                                                                 'IN(' . $filter['field'] . $this->quote($value) . ') as multi_json'.$as_count
    197                                                         );
    198                                                         $where_ins[] = 'multi_json'.$as_count . '=' . ($filter['not'] ? '0' : '1');
    199                                                 }
    200                                                 if ($where_ins){
    201                                                         $where_ins = join(' OR ', $where_ins);
    202                                                         $this->where($where_ins);
    203                                                 }
     193                                                $this->select(
     194                                                        'IN(' . $filter['field'] . ', ' . join(', ', array_map(array($this, 'quote'), $filter['values'])) . ') as multi_json_'.$as_count
     195                                                );
     196                                                $this->where('multi_json_'.$as_count . '=' . ($filter['not'] ? '0' : '1'));
    204197                                        }
    205198                                }
  • _plugins_/indexer/trunk/prive/squelettes/contenu/sphinx.html

    r82460 r82466  
    2525</style>
    2626
    27 <h1>Test SPHINX</h1>
     27<h1>Test SPHINX sur #ENV{source}</h1>
    2828
    2929[(#FORMULAIRE_RECHERCHE{#SELF})]
     
    7070[(#SET{sql,[(#GET{sql}|concat{"  FACET properties.tags ORDER BY COUNT(*) DESC"})]})]
    7171
    72 <pre>[(#GET{sql}|htmlspecialchars)]</pre>
     72#SET{query, #ARRAY{
     73        index,#ENV{source,spip},
     74        fulltext, #ENV*{recherche},
     75        filters, #LISTE{
     76                #ARRAY{
     77                        type,multi_json,
     78                        field,properties.tags,
     79                        values,#LISTE{#ENV*{tag}, truc, bidule},
     80                        not,true,
     81                },
     82                #ARRAY{
     83                        type,mono,
     84                        field,properties.date,
     85                        values,2014-04,
     86                        comparison,">=",
     87                        not,true,
     88                },
     89        },
     90}|sphinx_get_array2query}
     91
     92<pre>[(#GET{query}|htmlspecialchars)]</pre>
    7393
    7494
Note: See TracChangeset for help on using the changeset viewer.