sdx-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sdx-users] Problème sdx:filter


From: Pierrick Brihaye
Subject: Re: [sdx-users] Problème sdx:filter
Date: Wed, 23 Mar 2005 09:22:05 +0100
User-agent: Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.6) Gecko/20040113

Salut,

Malo Pichot a écrit :

<sdx:simpleQuery query="type_document:Sonore type_document:Braille" />
String myQueryId = sdx_qid;
<sdx:terms field="sujet" qidString="myQueryId"/>

Je rectifie ; la syntaxe ici ne devrait pas fonctionner : sdx_qid n'est pas créer avec <sdx:simleQuery>. C'est le boulot de <sdx:results /> ou de toute <sdx:execute*Query />.

Oui. Je m'etonne d'ailleurs d'avoir oublié ce execute.

> On peut employer :

<sdx:simpleQuery query="type_document:Sonore type_document:Braille" />
<sdx:results qid="myQueryId" hpp="0" />

Bien vu. Le hpp="0" fera gagner un peu de performance (20 résultats de moins dans le tuyau).

><sdx:terms field="sujet" qidString="myQueryId"/>

Gaffe : il manque le String myQueryId = sdx_qid; que l'on peut factoriser probablement ainsi :

<sdx:terms field="sujet" qidString="sdx_qid"/>

... mais c'est plus difficile à déboguer.

En ce qui concerne la performance, je partage les scrupules de Martin, surtout dans le cas proposé qui effectue préalablement une requête "OR". Ca oblige à un produit cartésien assez dispendieux.

Si je ne me trompe pas, on a tout de même une possibilité, pas très élégante, de "filtrage" dans <sdx:terms>. Il "suffit" d'utiliser une troncature :

<sdx:terms field="sujet" value="a*" />

ou, plus généralement, si j'en crois le code, une expression régulière (v. http://savannah.nongnu.org/cgi-bin/viewcvs/sdx/sdx_v2/src/java/fr/gouv/culture/sdx/search/lucene/query/Terms.java?annotate=1.73, ligne 208).

Cela permet de restreindre les termes éligibles et, le cas échéant, d'organiser un paging :

a-h i-m n-s t-z par exemple...

A+

--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden
+33 (0)2 99 29 67 78




reply via email to

[Prev in Thread] Current Thread [Next in Thread]