sdx-developers
[Top][All Lists]
Advanced

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

Re: [sdx-developers] SearchTransformer


From: Nicolas Maisonneuve
Subject: Re: [sdx-developers] SearchTransformer
Date: Wed, 1 Oct 2003 15:02:28 +0200


> <search:fieldquery field="xxx" term="coucou"/>
ca , ca signifie qu'on a déjà parsé l'attribut query contenant "coucou les"
et qu'on a trouvé le term coucou.. 
la question est: Quand avons nous fait cette operation ? j'imagine avant de lancer le transformer,.. justement pour créer le fragment xml
le tag fulltextquery repond juste au besoin d'une recherche fulltext (avec un seul champs de saisie)
et ne peut être une combinaison de fieldquery sans parser au préalable la valeur de ce champs de saisie..
sans parser cette query_string, un truc comme :
<group op=and>
<fieldquery field="xxx" term="coucou les">
<fieldquery field="yy" term="coucou les">
</group>
 
est différent de :
 
<fulltextquery query="coucou les" op="MYOPERATUR">
<field id="xxx">
<field id="yyy">
 
mais si on parse et qu'on releve les termes , alors rien n'empeche de faire un truc comme  ca, effectivement bien egal au tag fulltextquery du dessus:
<group op="MYOPERATUR">
<group op=or>
<fieldquery field="xxx" term="coucou">
<fieldquery field="yy" term="coucou">
</group>
 
<group op=or>
<fieldquery field="xxx" term="les">
<fieldquery field="yy" term="les">
</group>
</group>
 
OR je ne veux pas qu'on soit obliger d'analyzer en amons les query string  pour créer une requete répondant au besoin d'une recherche fulltext par une combinaison de search:fieldquery d'ou le tag fulltextquery..
 
pour ce tag , j'ai un parser spécial.. modifié du QueryParser..
qui, au lieu de me créer une query par term rencontré, ..me duplique la query en changeant le champ et ceci au tant de fois qu'il ya de champs recherchés.
parser query_string-> term identifié (ex: "les" a été identifé comme un fieldquery)-> pour chaque champs recherché.. :
                                                                je crée une query avec ce champs (A=new FieldQuery(xxx, les)) et B=new FieldQuery(yyy,les)
                                                                et encapsule tout ca dans un booleanquery..si plusieurs query: (ex bQuery.add( A), bQuery.add(b))
 
 
 
pour l'extension de requete, oui c'est un truc du genre dans SDX
><search:fieldquery field="xxx" "term="coucou">
>   <search:expand file="url" levelup="0" leveldown="5">
>     <search:expansion type="synonyms"/>
>     <search:expansion type="specific"/>
>   </search:expand>
></search:fieldquery>
disons que mon truc répond juste un petit besoin de filtrer par categorie
 
 
>Ici, il y a une question de fond : est-ce que ce tri se fait "à la SDX"
>en profitant des champs "stored" ou est-ce qu'il y a un mécansime qui
>permet de récupérer n'importe quel champ pour en faire une clé de tri ?
>J'ai démontré que, moyennant des petits patches à Lucene, c'était
>possible. Il n'est même pas impossible que les récents développements de
>Lucene suppriment le bseoin de patcher.
j'avoue que c'est fait "à l'arache.."  en utilisant les stored..
mais si il est possible de faire mieux .. je suis preneur.. !
>Voilà pour les premières réactions : comptez vous également implémenter
>des PhraseQuery (ou la position des termes est importante) et des
>FuzzyQuery ?
hmm pour moi c'est compri dans la fieldquery
qui utilise le parser lucene et donc peut tout faire  
ainsi un truc du genre <fieldquery query='~cocou coc*" defaulfield="nico"> marche
 
cette nuit j'ai fait aussi un grand pas.
maintenant on peut faire soit:
<search:query >
.<goup op="and">
<fulltextquery query="coco">
<field id="coco">
<field id="coco2">
</fulltextquery>
.</goup>
</search:query>
 
creation d'une nouvelle requete

ou <searchquery id="23">
.<goup op="and">
<fulltextquery query="coco">
<field id="coco">
<field id="coco2">
</fulltextquery>
.</goup>
 
filtre sur la requete n°23 (utilisation d'un cache session et d'un queryfilter )
que ca me créer un query n° 24
 
a noter que si  je fais
ou <searchquery id="24">
.<goup op="and">
<fulltextquery query="coco">
<field id="coco">
<field id="coco2">
</fulltextquery>
.</goup>
 
ca prend la query de base (n° 23) et ca ajoute les 2 filtres (filtre de la query 23, et le nouveau)
d'ou l'utilisation du cache de la queryfilter 23 et donc ca va plus vite..
 
----------------
 
je me donne comme objectif de faire le meme type de recherche possible que sur le serveur http://pharos.iniria.fr/java/
(google : java channel pharos)
 
----------------
 
 
----- Original Message -----
From: "Pierrick Brihaye" <address@hidden>
To: <address@hidden>
Sent: Wednesday, October 01, 2003 10:36 AM
Subject: Re: [sdx-developers] SearchTransformer

Bonjour,

Nicolas Maisonneuve a écrit:

> <search:lucenequery  defaultfield="xxx" query="coucou les type:amis"
> boost="3"  defaultop="or"/>
> =  (xxx:coucou xxx:les type:amis)^3

OK.

> 2-
> <search:fulltextquery query="coucou les" defaultop="and">
> </search:field id="xxx" boost="2">
> </search:field id="yyy" boost="3">
> </search:fulltextquery>
> = (xxx:coucou^2 yyy:coucou^3) +(xxx:les^2 yyy:les^3)

Ici, j'ai plus de mal. On a apparemment une fieldQuery (SDX) / termQuery
(Lucene). Pourquoi dans ce cas, ne pas préférer :

<search:fieldquery field="xxx" term="coucou"/>

... et mettre les 2 dans un <searchgroup operator="and"/> ?

> 3-
> <search:facetquery id="mycategorie" keyword="motcle">
> va voir dans une ontologie (source : fichier.owl) et fait une expansion du
> mot clé
> meme style que votre expandQuery  ..


> avec ces requetes unitaire , on faire faire des combinaisons du style :
>
> - <search:query>
> - <search:group op="and">
> - <search:group op="and">
>   <search:facetquery id="matiers" keyword="topologie" />
>   <search:facetquery id="matiers" keyword="anglais" />
>   </search:group>
> - <search:fulltextquery query="">
>   <search:field id="line" boost="2" />
>   <search:field id="speaker" />
>   </search:fulltextquery>
>   </search:group>
>   </search:query>

OK pour la notion de groupe :-)

> <search:sortfield name="matier"/> <-- possibilité de trier par ce champs

Ici, il y a une question de fond : est-ce que ce tri se fait "à la SDX"
en profitant des champs "stored" ou est-ce qu'il y a un mécansime qui
permet de récupérer n'importe quel champ pour en faire une clé de tri ?
J'ai démontré que, moyennant des petits patches à Lucene, c'était
possible. Il n'est même pas impossible que les récents développements de
Lucene suppriment le bseoin de patcher.

Voilà pour les premières réactions : comptez vous également implémenter
des PhraseQuery (ou la position des termes est importante) et des
FuzzyQuery ?

A+

--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden



_______________________________________________
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]