sdx-developers
[Top][All Lists]
Advanced

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

Re: [sdx-developers] QueryParser... encore


From: Nicolas Maisonneuve
Subject: Re: [sdx-developers] QueryParser... encore
Date: Thu, 18 Sep 2003 19:57:00 +0200

en parlant des  fichier javaCC
dans le fichier standardTokenizer.jj, la définition du type ACRONYM est pas
tres souple .
Example I.B.M est pour lui un HOST  et non un ACRONYM car il manque le point
à la fois (en fait il faudrait faire I.B.M. )
donc ce I.B.M n'est pas géré  dans l'analyzer standard (et donc l'analyzer
fr de SDX) (en sortie y'aura donc i.b.m et non ibm)

voilà ce que j'ai fait: <ACRONYM: <ALPHA> "." (<ALPHA> ".")+ (<ALPHA> |
(<ALPHA> ".")) >

vous vous attaquer à la lemmatisation .. Génial !
votre idée  c'est :
le mot --> le lemme --> les 3 formes du lemme -> recherche dans index
(lematisé) --> resultat
c'est ca ?

Comment comptez vous retrouvez le lemme a partir du mot ?

(juste pour info: dans le lucene standbox , il y'a un french stemmer..)


----- Original Message -----
From: "Pierrick Brihaye" <address@hidden>
To: <address@hidden>
Sent: Thursday, September 18, 2003 5:47 PM
Subject: [sdx-developers] QueryParser... encore


> Salut,
>
> J'avais prévu de vous reparler du queryParser, mais pas aussi tôt :-)
>
> Voilà mon problème ; je dois avouer que les fichiers JavaCC, ce n'est pas
ma
> tasse de thé mais bon, la partie qui me tracesse est en pur Java.
>
> protected Query getFieldQuery(String field,
>                               Analyzer analyzer,
>                               String queryText) {
>   // Use the analyzer to get all the tokens, and then build a TermQuery,
>   // PhraseQuery, or nothing based on the term count
>
>   TokenStream source = analyzer.tokenStream(field,
>                                             new StringReader(queryText));
>   Vector v = new Vector();
>   org.apache.lucene.analysis.Token t;
>
>   while (true) {
>     try {
>       t = source.next();
>     }
>     catch (IOException e) {
>       t = null;
>     }
>     if (t == null)
>       break;
>     v.addElement(t.termText());
>   }
>   if (v.size() == 0)
>     return null;
>   else if (v.size() == 1)
>     return new TermQuery(new Term(field, (String) v.elementAt(0)));
>   else {
>     PhraseQuery q = new PhraseQuery();
>     q.setSlop(phraseSlop);
>     for (int i=0; i<v.size(); i++) {
>       q.add(new Term(field, (String) v.elementAt(i)));
>     }
>     return q;
>   }
> }
>
> Si je comprends bien, en fonction du nombre de tokens, on construit :
> a) rien :-)
> b) une termQuery
> c) une phraseQuery
>
> Cette logique est implacable... tant que le positionIncrement des tokens
est
> égal à 1 ou, à tout le moins, différent de 0.
>
> Je travaille sur un tokenizer qui, pour un token en entrée, peut en
renvoyer
> N en sortie. Evidemment, ces N tokens ont les mêmes offsets que le token
> d'entrée. La seule différence, c'est que le premier a un positionIncrement
> de 1 (cas standard) et les autres un positionIncrement de 0.
>
> Cela me permet, pour un token qui serait par exemple "ordre", de sortie
> "ordre" (nom), "ordonner" (verbe), "ordonné" (adjectif)... Bref, on
> lemmatise.
>
> Tel que rédigé, le queryParser me crée donc des phraseQuery alors que je
> voudrais des termQuery combinées pour les termes ayant un
positionIncrement
> de 0 ou, peut-être une MultiTermQuery dont m'usage m'est moins familier.
> Comme pensez-vous que le problème puisse être résolu ?
>
> A+
>
> p.b.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> sdx-developers mailing list
> address@hidden
> http://mail.nongnu.org/mailman/listinfo/sdx-developers







reply via email to

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