sdx-users
[Top][All Lists]
Advanced

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

Re: [sdx-users] Booléen par défaut?


From: Pierrick Brihaye
Subject: Re: [sdx-users] Booléen par défaut?
Date: Sat, 18 Jan 2003 09:08:54 +0100

Re,

> Comment modifier l'opérateur par défaut qui relie les termes
> d'une recherche entre eux, qui est apparemment "OR", et que
> je voudrais passer en "AND" sans demander aux utilisateurs
> de préfixer tous leurs mots de recherche par un "+"?

Oula ! Difficile de répondre à cette question... Voici la réponse :

Une SimpleQuery (j'imagine que vous parlez de ça) utilise donc le
QueryParser de Lucene. J'ai vu passer, il y a quelques mois, une demande de
modification du QueryParser qui, jusqu'à maintenant, travaillait en
effectivement *toujours* en OR. C'est dans le code :

http://www.nongnu.org/sdx/docs/html/doc-sdx2/apidocs/fr/gouv/culture/sdx/sea
rch/lucene/queryparser/QueryParser.html#setOperator(int)

SDX a intégré ce changement (v. en particulier l'interface QueryParser.java
qui propose un très sympathique setOperator) mais je me demandais s'il était
disponible dans le reste du code.
Réponse : oui, la classe SimpleQuery dispose d'un setUp capable de
positionner l'opérateur par défaut du QueryParser.

Restait à voir si ce setUp (il y en a 3) était utilisé par la logicsheet.
Réponse : oui, avec un argument sdx_op.

Comment est constitué ce sdx_op ? avec un paramètre "sdx:op". Voilà :-)

Ceci dit, il serait pas mal, dans application.xsconf de pouvoir positionner
cet opérateur :
<sdx:queryParser
class="fr.gouv.culture.sdx.search.lucene.queryparser.DefaultQueryParser"
defaultOperator="OR" />

> Je voudrais aussi permettre aux utilisateurs de choisir l'ordre
> de tri (par champ et pour chacun ascendant/descendant) et je
> n'arrive pas à trouver l'info qui décrit comment faire?

C'est vrai que la doc est muette sur ce point. Voici un exemple tiré de SDX
1 :

<sdx:executeExactFieldQuery fieldParam="index" valueParam="query"
sfParams="tri"/>

avec "tri" constitué ainsi dans un form :

<input type="hidden" name="tri" value="region"/>
<input type="hidden" name="tri" value="dpt"/>
<input type="hidden" name="tri" value="com"/>
<input type="hidden" name="tri" value="adrs"/>
<input type="hidden" name="tri" value="lieu"/>
<input type="hidden" name="tri" value="edif"/>
<input type="hidden" name="tri" value="tico"/>

On peut faire plus simple et intégrer des éléments dans l'élement de query,
des éléments de tri (à la xsl) :

<sdx:sort field="xxx" order="yyy" />

Mais attention : sous SDX1, on ne pouvait trier que sur les champs de type
"brief" ! Je pense que sous SDX2, c'est la même chose car c'est étroitement
lié à la logique Lucene... qui a fait récemment pas mal de progrès dans ce
domaine.

A bientôt,

p.b.










reply via email to

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