Changeset 82822 in spip-zone


Ignore:
Timestamp:
Jun 2, 2014, 12:39:22 PM (5 years ago)
Author:
marcimat@…
Message:

Aération du markdown de doc, et documentation de OPTION

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/doc/boucle_sphinx.md

    r82816 r82822  
    1414
    1515
     16
    1617INDEX
    1718-----
     
    2122* @unique
    2223
    23 ----
     24** Exemples **
    2425
    2526    {index *}
     
    2930
    3031
     32
    3133SELECT
    3234------
     
    3941C'est le cas de : `{snippet ...}`, `{recherche ...}`
    4042
    41 ----
     43** Exemples **
    4244
    4345    {select *}
     
    4951
    5052
     53
     54
    5155RECHERCHE
    5256---------
     
    6064en ajoutant le calcul du score de recherche dans le champ `score`.
    6165
    62 ----
     66** Exemples **
    6367
    6468    {recherche #ENV*{recherche}}
     
    6670
    6771
     72
     73
    6874PAR
    6975---
     
    7480Critère de SPIP surchargé.
    7581
    76 ----
     82** Exemples **
    7783
    7884    {!par date}
     
    8086    {!par properties.objet, properties.id_objet}
    8187
    82   voir aussi, plus bas, la section "tri sélectif"
     88Voir aussi, plus bas, la section "tri sélectif"
     89
     90
    8391
    8492
     
    9199Critère de SPIP surchargé
    92100
    93 ----
     101** Exemples **
    94102
    95103    {par date}{inverse}
     104
     105
     106
    96107
    97108
     
    114125
    115126
    116 ----
     127** Exemples **
    117128
    118129    {snippet content}                                // calculera automatiquement les mots
     
    123134
    124135
     136
     137
    125138FACET
    126139-----
     
    131144Ajoute une sous requête de facette selon la syntaxe de sphinx.
    132145
    133 ----
     146** Exemples **
    134147
    135148    {facet auteurs, properties.authors ORDER BY COUNT(*) DESC}
    136149    {facet tags, properties.tags ORDER BY COUNT(*) DESC}
    137150    {facet annee, YEAR(date) ORDER BY date DESC}
    138           {facet favs, LENGTH(properties.share) AS favs ORDER BY FACET() DESC}
     151    {facet favs, LENGTH(properties.share) AS favs ORDER BY FACET() DESC}
     152
     153
    139154
    140155
     
    143158----------------
    144159
    145 ## Exemple de tri sur un score calculé
    146         {select WEIGHT()*(1+LENGTH(properties.share)) AS score2}
    147         {!par score2}
    148 
    149 
    150 
    151 ## Exemple de tri sur un « time segment »
    152 formule reprise de
    153 http://sphinxsearch.com/blog/2010/06/27/doing-time-segments-geodistance-searches-and-overrides-in-sphinxql/
     160
     161### Exemple de tri sur un score calculé
     162
     163    {select WEIGHT()*(1+LENGTH(properties.share)) AS score2}
     164    {!par score2}
     165
     166
     167
     168### Exemple de tri sur un « time segment »
     169
     170Formule reprise de [Doing time segments, geodistance searches, and overrides
     171in SphinxQL](http://sphinxsearch.com/blog/2010/06/27/doing-time-segments-geodistance-searches-and-overrides-in-sphinxql/)
    154172
    155173```
     
    181199
    182200Le 3è paramètre utilise une autre sélection, si la valeur vaut '-'.
    183 Les clés @valeur et @valeurs sont remplacés par la donnée attendue quotée, ou les données attendues quotées et séparés par des virgules.
    184 
    185 Si `#ENV{tags}` vaut array('toto','tata'), @valeurs aura `"'toto', 'tata'"`
     201Les clés `@valeur` et `@valeurs` sont remplacées par la donnée attendue quotée,
     202ou les données attendues quotées et séparées par des virgules.
     203
     204Si `#ENV{tags}` vaut `array('toto','tata')`, `@valeurs` aura `"'toto', 'tata'"`
    186205
    187206Chaque filtre crée le where associé (filtre = 1).
    188207
    189 ----
     208
     209** Exemples **
    190210
    191211    {filter #TRUC, select si contenu, select si '-'}
     
    195215    {filter #ENV{favs}, @valeur <= LENGTH(properties.share)}
    196216
    197 ----
    198 
    199 Des filtres spécifiques à des cas courants de comparaisons sont pré-programmés, ce qui évite de devoir connaître et écrire soi-même le code Sphinx des tests.
     217
     218
     219
     220
     221FILTRES SPÉCIFIQUES
     222-------------------
     223
     224Des filtres spécifiques à des cas courants de comparaisons sont pré-programmés,
     225ce qui évite de devoir connaître et écrire soi-même le code Sphinx des tests.
     226
     227
    200228
    201229### Filtre pour un champ n'ayant qu'une valeur (mono-valué)
     230
    202231* @syntaxe `{filtermono test, champ, valeur(s)[, comparaison]}`
    203232
    204 Le test en premier permet de passer n'importe quelle valeur (avec filtre ou pas) qui permettra de dire si on va ajouter le filtre ou pas. Le cas courant est de mettre la valeur d'un paramètre de l'URL, et s'il est présent et rempli, on ajoute le filtre.
     233Le test en premier permet de passer n'importe quelle valeur (avec filtre ou pas)
     234qui permettra de dire si on va ajouter le filtre ou pas. Le cas courant
     235est de mettre la valeur d'un paramètre de l'URL, et s'il est présent et rempli,
     236on ajoute le filtre.
    205237
    206238La comparaison est optionnelle, et vaut "=" par défaut.
    207239
    208 Le champ de valeur peut être une liste de plusieurs valeurs, et dans ce cas le test sera un "OU" sur chacune des comparaisons !
     240Le champ de valeur peut être une liste de plusieurs valeurs,
     241et dans ce cas le test sera un "OU" sur chacune des comparaisons !
    209242
    210243**Exemples**
    211 ```
    212 // Les documents publiés par défaut, sinon ceux du statut demandé
    213 {filtermono #ENV{statut,publie}, properties.statut, #ENV{statut,publie}}
    214 // Les documents de 2014 ou 2013
    215 {filtermono #ENV{annee}, year(date), #LISTE{2014,2013}}
    216 // Les documents ayant au moins #ENV{favs} partages
    217 {filtermono #ENV{favs}, length(properties.share), #ENV{favs}, '>='}
    218 ```
     244
     245    ```
     246    // Les documents publiés par défaut, sinon ceux du statut demandé
     247    {filtermono #ENV{statut,publie}, properties.statut, #ENV{statut,publie}}
     248    // Les documents de 2014 ou 2013
     249    {filtermono #ENV{annee}, year(date), #LISTE{2014,2013}}
     250    // Les documents ayant au moins #ENV{favs} partages
     251    {filtermono #ENV{favs}, length(properties.share), #ENV{favs}, '>='}
     252    ```
     253
     254
    219255
    220256### Filtre pour un champ JSON ayant plusieurs valeurs (multi-valué)
     257
    221258* @syntaxe `{filtermultijson test, champ, valeur(s)}`
    222259
    223 Mêmes principes que pour le critère précédent sauf que le critère cherche si les valeurs font partie du tableau "champ" (qui doit donc être une liste de plusieurs valeurs).
    224 
    225 Si on donne plusieurs valeurs, le critère fera un "ET" entre les tests. Si l'une de ces valeurs est elle-même un tableau, le critère fera un "OU" (avec la commande Sphinx IN).
     260Mêmes principes que pour le critère précédent sauf que le critère cherche si les valeurs font partie
     261du tableau "champ" (qui doit donc être une liste de plusieurs valeurs).
     262
     263Si on donne plusieurs valeurs, le critère fera un "ET" entre les tests. Si l'une de ces valeurs
     264est elle-même un tableau, le critère fera un "OU" (avec la commande Sphinx IN).
    226265
    227266- Si les valeurs sont `#LISTE{mot1, mot2, mot3}` : ça cherchera les documents qui ont mot1 ET mot2 ET mot3.
     
    229268
    230269**Exemples**
    231 ```
    232 // Un auteur précis parmi ceux du document
    233 {filtermultijson #ENV{auteur}, properties.authors, #ENV{auteur}}
    234 // Les documents ayant tous les tags demandés, par ex si tags[]=truc&tags[]=bidule
    235 {filtermultijson #ENV{tags}, properties.tags, #ENV{tags}}
    236 ```
     270
     271        ```
     272        // Un auteur précis parmi ceux du document
     273        {filtermultijson #ENV{auteur}, properties.authors, #ENV{auteur}}
     274        // Les documents ayant tous les tags demandés, par ex si tags[]=truc&tags[]=bidule
     275        {filtermultijson #ENV{tags}, properties.tags, #ENV{tags}}
     276        ```
     277
     278
    237279
    238280### Filtre de distance
     281
    239282* @syntaxe `{filterdistance test, point1, point2, distance[, comparaison[, nom du champ]]}`
    240283
    241 Ce critère sélectionne uniquement les réponses qui font que la distance entre le point 1 et le point 2 correspond à la comparaison demandée avec la distance passée en paramètre.
     284Ce critère sélectionne uniquement les réponses qui font que la distance entre le point 1 et le point 2 correspond
     285à la comparaison demandée avec la distance passée en paramètre.
    242286
    243287La comparaison est optionnelle est vaut "<=" par défaut.
    244 Le nom de la distance calculée est optionnelle et vaudra par défaut "distance_0" pour la première distance demandée, puis "distance_1", etc. Ce paramètre permet de maîtriser le nom afin de pouvoir plus facilement demander un tri par le nom voulu, et récupérer la valeur avec une balise.
     288Le nom de la distance calculée est optionnelle et vaudra par défaut "distance_0"
     289pour la première distance demandée, puis "distance_1", etc.
     290
     291Ce paramètre permet de maîtriser le nom afin de pouvoir plus facilement
     292demander un tri par le nom voulu, et récupérer la valeur avec une balise.
    245293
    246294**Exemple**
    247 ```
    248 // Tous les documents qui sont à moins de 5km de Bordeaux, avec comme nom #DISTANCE
    249 #SET{bordeaux, #ARRAY{lat, 44.83717, lon, -0.57403}}
    250 #SET{point_document, #ARRAY{lat, properties.geo.lat, lon, properties.geo.lon}}
    251 {filterdistance , testok, #GET{bordeaux}, #GET{point_document}, 5000, '<=', distance}
    252 ```
    253 
    254 PAGES
    255 -----
    256 
    257 Permet de décaler le tableau de résultats pour exploiter ensuite la pagination d'une boucle DATA avec la liste des documents.
    258 
    259 ----
    260 
    261     {pages #DEBUT_DOCUMENTS}
    262     {pages #DEBUT_DOCUMENTS, 20}
     295
     296        ```
     297        // Tous les documents qui sont à moins de 5km de Bordeaux, avec comme nom #DISTANCE
     298        #SET{bordeaux, #ARRAY{lat, 44.83717, lon, -0.57403}}
     299        #SET{point_document, #ARRAY{lat, properties.geo.lat, lon, properties.geo.lon}}
     300        {filterdistance , testok, #GET{bordeaux}, #GET{point_document}, 5000, '<=', distance}
     301        ```
     302
     303
     304
     305OPTIONS
     306-------
     307
     308Options pour les requêtes à Sphinx
     309
     310@syntaxe `{option nom, valeur}`
     311
     312** Exemple **
     313
     314    {option field_weights, "(title=10, content=5)"}
Note: See TracChangeset for help on using the changeset viewer.