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