[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE : RE : [sdx-developers] QueryParser : ...et toujours
From: |
Rasik Pandey |
Subject: |
RE : RE : [sdx-developers] QueryParser : ...et toujours |
Date: |
Mon, 29 Sep 2003 11:58:07 +0200 |
Salut,
>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.
Eh...ce n'est pas au QueryParser de chercher les Analyzers, c'est du
code dans chaque requête. 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.
>... 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.
>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).
>
Pourquoi pas créer/configurer l'Analyzer et l'ajouter dans
l'AnalyzerManager au moment de l'exécution? Après il faut avoir
seulement une méthode comme:
Query.setUp(SearchLocations sLocs, <<String analyzerId>>, String
defaultField, String q, int operator);
Avec qqch comme:
componentManger.lookup(Framework).getAnalyzerManager().getAnalyzer(analy
zerId);
Soit:
Query.setUp(SearchLocations sLocs, <<Analyzer analyzer>>, String
defaultField, String q, int operator);
Soit:
Query.setAnalyzer(Analyzer a OU String analyzerId);//le defaut sera
celle du champ
Avec qqch comme:
componentManger.lookup(Framework).getAnalyzerManager().getAnalyzer(analy
zerId);
Ca me semble beaucoup plus facile à gérer que changer l'Analyzer du
champ à chaque requête envoyée?
Qu'en penses-tu?
Rasik