sdx-users
[Top][All Lists]
Advanced

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

[sdx-users] complexQuery sur plusieurs bases?


From: Emmanuel Bégué
Subject: [sdx-users] complexQuery sur plusieurs bases?
Date: Fri, 21 Feb 2003 13:54:23 +0100

Bonjour,

J'essaie d'effectuer des recherches sur plusieurs bases
à l'aide d'une complex query, et les résultats sont plutôt
surprenants (sachant que la même complex query sur une
seule base à la fois fonctionne parfaitement).

La base "alc" contient en tout 55 000 documents, dont 2118
ayant une date comprise entre le 1er et le 31 janvier 2003.

La base "03" contient 87 documents, tous du 02/01/2003, et
qui sont également présents dans la base "alc" sous le même
identifiant.

Si je recherche les documents de la période comprise entre
le 1er janvier 2003 et le 31 décembre 2003:
- sur la base 03 seule: 87 documents (OK)
- sur la base alc seule: 2118 documents (OK)
- sur les deux bases à la fois: 174 documents => ????

174 = 87 x 2 donc j'ai pensé qu'il s'agissait des
documents présents dans les deux bases; pour le vérifier
j'ai rajouté 83 documents dans la base "03" (également de
janvier 2003, et également présents sous le même
identifiant dans l'autre base).

Et en effet, la recherche sur les deux bases donne 340
réponses, soit (87+83)*2

De la même façon, une recherche sur un intervalle de dates
non couvert par la seconde base (c'est à dire, pour lequel
la seconde base ne contient aucun document) donne 0 résultats.

C'est un premier problème.

Le second problème, encore plus étonnant, est que les
résultats qui sont fournis par la requête sur 2003 ne sont pas
du tout des documents de janvier 2003, mais des documents
datés de 1996 (donc issus uniquement de la base par défaut)
=> ??? (la date de ces documents est conforme, et lorsqu'on
fait des recherches sur une seule base il n'y a aucun problème).

Ce n'est pas seulement un problème d'intervalle de date: les
recherches de mots fonctionnent de la même façon, à savoir qu'elles
recherchent apparemment sur l'intersection des deux bases
(au lieu de leur union).

La simple query fonctionne elle normalement - c'est à dire qu'une
recherche sur:
        <sdx:executeSimpleQuery queryParam="q" op="and">
                <sdx:parameter name="base" value="03"/>
                <sdx:parameter name="base" value="alc"/>
                </sdx:executeSimpleQuery>

renvoie les documents correspondants sur les deux bases, et
donc deux fois le même, le cas échéant.

Ci-dessous le contenu de ma complexQuery. J'imagine que je ne
déclare pas les bases au bon endroit, ou qu'il faut les lier avec
"OR" -- mais quelle est la syntaxe correcte? Tout conseil sera
le bienvenu...

Cdt,
EB

PS: les bases sont bien ouvertes dans l'admin, et la complexQuery
dans chaque base prise séparément fonctionne parfaitement.



<sdx:executeComplexQuery hppParam="hpp" hppSession="hpp" hpp="10">

        <sdx:parameter name="base" value="03"/>
        <sdx:parameter name="base" value="alc"/>

        <sdx:simpleQuery field="contenu" queryParam="q" op="and"/>
        <sdx:dateQuery field="dateParution" fromSession="from" toSession="to"/>
        <sdx:simpleQuery field="titres" queryParam="titre" op="and"/>
        <sdx:simpleQuery field="auteurs" queryParam="auteur" op="and"/>
        <sdx:simpleQuery field="keywords" queryParam="motcle" op="and"/>
        <sdx:simpleQuery field="geos" queryParam="lieu" op="and"/>
        <sdx:simpleQuery field="typeArticle" queryParam="type" op="and"/>
        <sdx:listQuery field="rubriqueWeb" valueParam="rub" op="or"/>
        </sdx:executeComplexQuery>






reply via email to

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