sdx-users
[Top][All Lists]
Advanced

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

Re: [sdx-users] affichage alphabétique d'un e liste de terme sur un cham


From: Frédéric Glorieux
Subject: Re: [sdx-users] affichage alphabétique d'un e liste de terme sur un champ
Date: Fri, 17 Jun 2005 19:43:03 +0200
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)


J'ai l'impression qu'il n'y aurait pas grand chose à faire
http://savannah.nongnu.org/cgi-bin/viewcvs/sdx/sdx_v2/src/java/fr/gouv/culture/sdx/search/lucene/query/Terms.java?rev=HEAD&content-type=text/vnd.viewcvs-markup

chercher
"private static RE getRE(String str) throws RESyntaxException"

En commentant les lignes 725 et 730
// case '^':
// case '|':

Vous pouvez permettre des expressions régulières plus précises, comme par exemple

^B*|^A*

(les auteurs qui commencent pas A ou B)

Par contre, cela ne fait pas une syntaxe très intuitive pour le public. Les expressions régulières donnent des résultats trop innatendus pour ouvrir cela sans réflexion dans SDX.
Par exemple,
A*|B*
Donnera aussi bien "Allais, Alphonse", que "d'Artagnan" ou "France, Anatole" (ne pas oublier le '^' pour indiquer le début de terme).

Evidemment A*|a* donne à peu près tout (constaté après test).

Ce n'est plus une solution en 1 ligne, mais on peut faire fonctionnner ceci, pas trop éloigné de la syntaxe habituelle

A*  a*

Par contre, si vous vouliez des espaces dans vos termes, c'est foutu.

Cela vous demande à compiler la classe, et à la mettre dans sa hiérarchie sous
WEB-INF/classes/ (pour surcharger le jar SDX sans y toucher).

J'interviens tard, mais à ma connaissance SDX ne permet pas de faire cela directement. On peut le simuler avec un post-traitement, mais on perd la notion de pagination des termes qu'offre SDX.

Une autre solution consiste à préfixer le contenu de ton champ par la première lettre sans différence de casse. Par exemple, si tu as les termes Avion et amirauté, tu peux stocker dans ton champ:

a|amirauté
a|Avion

Ensuite, tu filtres sur v=a* et tu auras les deux. Evidemment à l'affichage tu proposes <xsl:substring-after(sdx:term/@value, '|')/> mais ça tu y aurais pensé tout seul ;-)



--
Frédéric Glorieux ("AJLSM", <http://ajlsm.com>)






reply via email to

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