Accueil > Développement d'applications SDX > Les concepts de base


Les types de recherche

Dernière modification : 2001/11/02 11:28:04     Contact : Martin Sévigny

SDX offre pour l'instant sept types de recherche, dont un qui est très générique. Ces types de recherche finissent toujours par donner une seule requête de recherche qui est fournie au moteur de recherche sous-jacent.

En plus de ces types de recherche, SDX prévoit la notion de filtre, de requête de base et de tri.

Les champs de recherche

En matière de recherche, un document pour SDX est une collection de champs. Chaque champ porte un nom (ou un code) et contient une valeur. Plusieurs champs peuvent porter le même nom, dans ce cas on parlera d'un champ multivalué ou à occurrences multiples.

Les informations sur la configuration d'une base de documents fournissent des explications sur les types de champs que l'on peut avoir dans SDX.

La recherche s'effectue toujours dans un ou plusieurs champs. En fait, chaque critère d'une recherche est associé à un champ. Puisqu'il existe un champ par défaut, on peut ne pas spécifier de champ dans les requêtes.

Par conséquent, il n'existe pas de notion de recherche en texte intégral dans SDX. En effet, on recherche toujours dans des champs, mais bien entendu un champ peut contenir l'ensemble du texte d'un document.

Le tri

Par défaut, les résultats de recherche sont triés par ordre décroissant de pertinence. La pertinence est calculée à l'aide de fonctions statistiques reliées à la présence des termes recherchés dans les documents.

Toutefois, il est possible de préciser un tri différent, en utilisant autant de clés de tri que l'on veut. Une clé de tri est toujours composée de deux informations : le nom d'un champ ainsi que l'ordre de tri (ascendant ou descendant). Si l'ordre n'est pas précisé, c'est l'odre ascendant qui est effectif.

Le tri est textuel (sauf pour les dates où il est chronologique), selon les critères de la langue française (tels qu'implantés par le langage Java).

Les filtres

Les filtres peuvent être vus comme des critères de recherche supplémentaires. Toutefois, ils constituent une manière simple et élégante de créer des zones dans la base de documents.

En effet, supposons qu'une base de données bibliographique contienne des références provenant de trois institutions. Il pourrait y avoir un champ qui indique la provenance, et on pourrait avoir besoin fréquemment de chercher des références dans une institution seulement.

Les filtres pourraient être appropriés, même si des critères de recherche supplémentaires pourraient aussi être utilisés.

Les filtres sont toujours une série de champs et de valeurs pour ce champ. L'ensemble de ces critères est relié par un opérateur logique ET ou OU.

Les requêtes de base

Les requêtes de base sont un mécanisme qui servent à effectuer des recherches en fonction des résultats d'une requête précédente. La plus grande utilité de cette fonction est de permettre à des utilisateurs de faire une recherche dans les résultats d'une recherche précédente.

Dans un tel scénario, la requête précédente devient la requête de base, et la nouvelle requête est la requête principale. De plus, l'opérateur qui relie ces deux requêtes est l'opérateur logique ET.

On pourrait aussi utiliser l'opérateur logique OU (pour ajouter d'autres résultats) ou l'opérateur logique SAUF (pour exlure des résultats).

Les types de recherche

Recherche simple

La recherche simple, malgré son nom, peut également être vue comme celle qui permet le plus grand nombre de possibilités. En fait, il s'agit d'une recherche où l'on spécifie directement la requête dans le langage propre à l'outil de recherche SDX. Cette requête peut être aussi simple qu'un seul mot, tout comme elle peut inclure plusieurs termes, différents champs, des mots requis ou interdits, des parenthèses pour regrouper, etc.

Il y a toutefois une limite à l'utilisation des recherches simples. En effet, les requêtes exprimées sont d'abord converties en mots avant d'être interprétées. Par conséquent, la recherche dans des champs de type champ ou de type date risque de donner des résultats décevants. Il est donc fortement conseillé d'utiliser la recherche simple dans des champs de type mot.

Le langage de requête de SDX est décrit par ailleurs, il est conseillé de s'y référer pour bien comprendre

Recherche restreinte

La recherche restreinte est semblable à la recherche simple, mais cette fois on va rendre tous les mots de la requête obligatoires, même si l'opérateur + n'est pas spécifié.

Recherche par champ

La recherche par champ est une recherche à un seul critère de recherche. Ce critère est composé d'un terme recherché et d'un champ où s'effectue la recherche.

Dans une recherche par champ normale (classe SDXFieldQuery, élément XSP sdx:executeFieldQuery ou servlet fieldsearch), les masques de troncature sont acceptés dans l'expression de recherche. Dans une recherche par champ exacte (classe SDXExactFieldQuery, élément XSP sdx:executeExactFieldQuery ou servlet exactfieldsearch), ils ne le sont pas.

Recherche par intervalle de dates

La recherche par intervalle de dates ne donnera des résultats intéressants que pour un champ de type date. Il s'agit d'une recherche où l'on peut spécifier une date de début ou une date de fin, voire les deux, et trouver des résultats dont le champ spécifié contient une date entre ces deux valeurs.

Si l'une des deux dates n'est pas spécifiée, la recherche n'est pas bornée. Si les deux dates ne sont pas spécifiées, il y aura une erreur.

Recherche linéaire

Une recherche linéaire est une recherche à plusieurs critères, mais tous les critères se suivent sur un même niveau. Ils sont reliés par un opérateur logique, et c'est l'ordre naturel de précédence qui déterminera la signification exacte de la recherche.

Ce type de recherche permet de faire des requêtes du genre :

region=Aquitaine ET departement=Gironde OU departement=Landes

Dans cet exemple, le ET l'emporte sur le ou, alors les résultats ne seront pas nécessairement ceux désirés.

Une autre façon de décrire ce type de recherche consiste à dire qu'il s'agit d'une requête booléenne sans la possibilité d'utiliser les parenthèses.

Recherche complexe

Une recherche complexe est en fait un recherche très générique qui est exprimée à l'aide d'un arbre de critères. Les noeuds de cet arbre sont soit des requêtes complexes ou un autre type de requête (et dans ce cas il s'agit de feuilles).

Un noeud de type complexe relie des noeuds à l'aide d'un seul opérateur booléen. En combinant les noeuds correctement, on peut arriver à faire une requête booléenne avec tous les niveaux de parenthésage requis.