sdx-developers
[Top][All Lists]
Advanced

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

Re: RE : [sdx-developers] QueryParser : ...et toujours


From: Pierrick Brihaye
Subject: Re: RE : [sdx-developers] QueryParser : ...et toujours
Date: Mon, 29 Sep 2003 10:13:56 +0200
User-agent: Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02

Salut,

Martin Sevigny a écrit:

Par défaut, bien sûr, analyseur d'indexation = analyseur de recherche.

Si ça te rend service, pourquoi pas?

Ca me rendrait service :-) Pour un exemple pratique, aller voir dans le CVS, modules demos/quran ;-)

Tu vois un problème à coder cela?

Oui : plus le temps cette semaine :-)

Plus sérieusement, il faut que j'ai une vision plus globale du phénomène. En l'état actuel de mes observations, les analyseurs sont passés à l'AnalyzerManager (ce qui permet une mutualisation est est assez proche d'un ComponentSelector Avalon). J'aime bien cette approche...

Là où je tique plus, c'est que le QueryParser va chercher l'analyseur d'indexation du champ par défaut ou, au pire, l'analyseur d'indexation de la liste de champs.

Or, ça me semble être un cas particulier, même si c'est le cas le plus couramment utilisé. On devrait, ainsi que je l'ai demandé, pouvoir définir l'analyseur de recherche, idéalement jusque dans la taglib :

<sdx:execute*Query ...>
  <sdx:analyzer class="..." confFile="..."/>
</sdx:execute*Query>

C'est donc très dépendant des locations, c.a.d. des bases de documents. IMHO, on devrait pouvoir spécifier un Analyser (enregistré chez l'AnalyzerManager) dans LuceneDocumentBase ou, plutôt, dans LuceneIndex, soit au moment de la configuration, soit à l'exécution (setAnalyzer).

Bien sûr, si cet Analyzer n'est pas défini, le comportement actuel devrait persister.

En gros, ça devrait se passer dans SimpleQuery, méthode :

public void setUp(SearchLocations sLocs, String defaultField, String q, int operator) throws SDXException {

un truc du genre :
fa = this.searchLocations.getAnalyzer()

... mais j'ai du mal à évaluer l'impact si on a plusieurs locations.

En tout cas, avec la méthode setAnalyzer que j'ai ajoutée dans Field (sans en référer à l'AnalyzerManager), je peux changer l'Analyzer à l'exécution. Je le fait dans l'appli, mais c'est tricky (et il manque une clause finally).

A+

--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden





reply via email to

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