sdx-developers
[Top][All Lists]
Advanced

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

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


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

Salut,

Rasik Pandey a écrit:

Eh...ce n'est pas au QueryParser de chercher les Analyzers, c'est du
code dans chaque requête.

Oups ! Le pire c'est que j'ai regardé avant d'écrire... et plutôt 2 fois qu'une :-)

Donc, tu as raison, c'est bien à la requête d'aller chercher son QueryParser... et l'analyseur utilisé par le dit QueryParser.

Normalement, il y a une méthode
(query.setUp()) pour chaque type de requête qui utilise le QueryParser.
À cette méthode, tu peux passer le nom du champ duquel on tire son
Analyzer.

... ce qui est bien mais pas suffisant.

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

?
La requête crée en utilisant ton Analyzer sera la requête (la texte)
pour chaque location/base.

Ca, c'est OK. mais si on prévoit de *globaliser* l'analyseur, je me demande que que ça va donner. Si j'ai un queryParser auquel j'ai transmis un analyseur anglais, ça va (normalement) marcher sur la location en anglais, mais plus difficilement sur la location en arabe. Il n'est pas facile de faire la part des choses entre ce qui relève su design de SDX et ce qui relève du design de ses applis.

Autant le dire tout de suite : je pense qu'une appli qui ferait en même temps une requête sur de l'anglais et de l'arabe serait mal designée ;-)

Pourquoi pas créer/configurer l'Analyzer et l'ajouter dans
l'AnalyzerManager au moment de l'exécution?

Pas eu le temps. Mais bon, comme je le disais, dans application.xconf, l'élément <sdx:QueryParser analyzerClass)"xxx"> est un bon endroit pour le faire.

Après il faut avoir
seulement une méthode comme:

Query.setUp(SearchLocations sLocs, <<String analyzerId>>,  String
defaultField, String q, int operator);

On est d'accord ;-)

Avec qqch comme:
componentManger.lookup(Framework).getAnalyzerManager().getAnalyzer(analy
zerId);

Ici aussi.

Ca me semble beaucoup plus facile à gérer que changer l'Analyzer du
champ à chaque requête envoyée?

Bien sûr, mais c'est plus long à coder. Franchement, je n'ai pas eu le temps de m'impliquer là-dessus. Les problèmes que les classes standard de Lucene ont avec des tokens avec des positionIncrement = 0 m'a bouffé tout ce que je pouvais mettre sur ette affaire.

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]