[Top][All Lists]
[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