sdx-developers
[Top][All Lists]
Advanced

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

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


From: Pierrick Brihaye
Subject: Re: [sdx-developers] QueryParser... encore
Date: Thu, 18 Sep 2003 20:37:13 +0200

Re,

Bon... on récapitule :-) Je suis en train de me débouiller en ajoutant après
ça :

>     v.addElement(t.termText());


   //TODO : how to handle mixed cases ?
   if (t.getPositionIncrement() == 0) makePhraseQuery = false;
   System.out.println(t.termText() + "\t" + t.getPositionIncrement());

Objectif : dès qu'on a un getPositionIncrement() égal à 0, on va traiter le
cas particulier. Ca ne concerne pas tous les gens "normaux" pour qui
getPositionIncrement est() toujours égal à 1.

Ensuite, je change ça :

>   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;
>   }
> }

en ça :

  else {

   PhraseQuery pq = new PhraseQuery();
   pq.setSlop(phraseSlop);
   BooleanQuery bq = new BooleanQuery();

   for (int i = 0; i < v.size(); i++) {
    t = (org.apache.lucene.analysis.Token)v.elementAt(i);
    if (makePhraseQuery) {
     pq.add(new Term(field, t.termText()));
     System.out.println("Added phrase term" + "\t" + t.termText());
    }
    else {
     bq.add(new BooleanClause(new TermQuery(new Term(field, t.termText())),
false, false));
     System.out.println("Added optional term" + "\t" + t.termText());
    }
   }
   if (makePhraseQuery) return pq;
   else return bq;
  }

Cas normal : toujours une phraseQuery
Cas "pas normal" : une booleanQuery où tous les termes sont optionnels.

Si vous êtes d'accord, je fais le commit. Je dois cependant gérer le cas
complexe où on aurait un panachage de tokens ayant des positions
différentes. En clair, vos PhraseQuery devraient encore fonctionner (le code
est le même) mais les miennes ne sont pas près de le faire :-)

A tout de suite sur un truc bizarre...

p.b.






reply via email to

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