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|AvionEnsuite, 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>)
_______________________________________________
sdx-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/sdx-users
