0

6 La navigation dans le manuel de Kentika est réservée aux utilisateurs identifiés



Recherche globale (Global search)

Recherche globale

Cette page a pour vocation d'expliquer le paramétrage de la recherche globale, c'est-à-dire la recherche "simple" affichée par défaut dans la barre du haut du portail Atomic. Le fonctionnement de cette recherche a été modifié et optimisé en v3 et en v4.

Afficher la recherche globale sur le portail

La recherche globale est affichée en différent endroits, gérés la plupart du temps par des composants du menu web. Cette recherche globale peut être utilisée par exemple :

  • Dans la barre du haut (topbar), pour rechercher sur tout le site (composant topbar_right > global_search)
  • Dans le bandeau, pour rechercher sur tout le site (menu web zone C > GenericQuickSearch)
  • Sur la page d'accueil, pour rechercher sur tout le site (composant HomePage > QuickSearch)
  • Sur les listes, pour rechercher dans les résultats courants (composant ListRecord_ToolsE > filter)

Pour la page d'accueil, le bandeau et la topbar, vous pouvez choisir les options proposées aux utilisateurs :

  • filtrer a priori sur les types / tables (composant global_search_options > filter_types03 pour les types de documents, filter_tables pour basculer entre les tables ou filter_types_tables pour les deux)
  • autocomplétion (composant global_search_options > autocomplete)
  • recherches enregistrées de l'utilisateur (composant global_search_options > myFolders)
  • dernières recherches effectuées par l'utilisateur (composant global_search_options > lastSearches)
  • raccourci vers la recherche avancée (composant global_search_options > advancedSearch)

Paramétrer la recherche globale

La recherche globale est basée sur une requête dont le libellé doit être "Global_search".

Il est possible de différencier ces requêtes par espace : pour une recherche globale spécifique à un espace, il suffit de faire suivre son intitulé par le n° de l'espace (exemple : Global_Search3 pour l'espace 3).

Il est possible de créer une recherche globale par table (elle n'est pas réservée aux seuls documents).

Champs sur lesquels porte la recherche

Le fonctionnement de ces requêtes est différent des autres requêtes. Il est d'ailleurs recommandé de ne cocher aucune case attribut (ni "Menu recherche", ni "Dossiers", etc.).

La recherche porte uniquement sur les types d'enregistrements définis dans la requête en question.

De manière simple, la recherche porte sur tous les champs sélectionnés dans cette requête.

La recherche globale portera dans ce cas sur les champs Titre, Référence et Date de parution.

Il existe dans la plupart des composants liés à cette recherche une case à cocher "Dans toute la fiche" (proposée cochée par défaut dans les composants standards). En v3, la case était présente dans la majorité des cas. En v4, elle est cachée et cochée par défaut (mais il est toujours possible de la réactiver avec un développement spécifique si besoin).

Cette option permet de proposer deux recherches en un seul champ : une rapide et une plus poussée. Le fonctionnement, par rapport à la requête "global_search" est le suivant :

  • Lorsque la case est cochée : on recherche sur tous les champs de la requête.
  • Lorsque la case n'est pas cochée : on recherche sur tous les champs de la première ligne uniquement.

Par exemple, en partant de la requête suivante :

  • Lorsque la case "dans toute la fiche" est cochée, la recherche porte sur les champs Titre, Référence, Mots-clés, Commentaire, Auteurs, et sur le Texte intégral (proposé dans la base avec le module Document engine ou KDE).
  • Lorsque la case "dans toute la fiche" n'est pas cochée, la recherche porte uniquement sur les champs Titre, Référence et Mots-clés ;

​​La date en recherche globale

S'il existe une ligne dans la requête portant sur une rubrique de type date, elle est isolée et l’opérateur associé dans la requête est pris en compte comme un filtre sur la liste des résultats. Lors de l'analyse de l'expression de recherche, si une valeur numérique comprise entre 1800 et 2050 est identifiée, elle est appliquée au champ "date" désigné dans la construction de la "Global_Search" avec l'opérateur correspondant. Seule l’année est prise en compte.

Opérateurs de recherche

Les opérateurs sélectionnés pour chaque ligne sont concaténés et s'appliquent sur toutes les lignes de la requête. Ainsi, si "approximation phonétique" est appliqué à une ligne, il sera appliqué à toutes les lignes. Idem pour les opérateurs d'autopostage ou le texte intégral (KDE).

Note : il n'est par exemple pas possible de rechercher sur un seul niveau pour un champ lié au thésaurus et sur tous les termes spécifiques pour un autre champ lié au thésaurus. Il n'est pas non plus possible de rechercher en mode Contient tous les mots sur un champ et en mode Contient l'expression pour un autre.

Les opérateurs de recherche disponibles sont les suivants :

  • Contient tous les mots (n) / Contient un des mots (1) / Tous les mots dans l'ordre (n;x1) / Contient l'expression (n;x2) / Commence par l'expression (n;x3) / Est égal à l'expression (n;x9)
  • Approximation phonétique (p)
  • Rechercher aussi sur les alias (a)
  • Mot commence par (*)
  • Autopostage :
    • rechercher aussi sur les termes associés (TA1)
    • les termes spécifiques, en descendant un niveau en dessous (TS1), deux niveaux (TS2), trois niveaux (TS3), tous les niveaux (TS9)
    • les termes génériques, en remontant sur un niveau au dessus (TG1), sur deux niveaux (TG2), sur trois niveaux (TG3), sur tous les niveaux (TG9)

Note : les opérateurs booléens entre les lignes ne s'appliquent pas pour la global_search. Inutile donc de changer certaines lignes en "OU" ou "SAUF".

Exécution de la recherche globale

Analyse de la recherche

Les opérateurs suivant sont utilisables dans les recherches, notamment globales :

  • Booléens : ET ; OU ; SAUF (dont la syntaxe exacte dépend des réglages de la base)
  • Les parenthèses (...) peuvent être utilisées pour la construction d'équations
  • Les guillemets "..." permettent de faire une recherche en termes exacts, uniquement s'ils sont utilisés sur la totalité des termes recherchés. On peut donc chercher une expression exacte, mais pas la combinaison de deux expressions exactes, par exemple.
  • L'étoile * ou l'arobase @ permettent d'exprimer la troncature

Traitement de la recherche

Les règles de la recherche globale décrites ici s'appliquent uniquement lorsque :

  • il existe un espace dans l'expression recherchée
  • et l'expression recherchée ne commence et finit pas par "

Sinon, c'est le mode classique qui s'applique.

Exemples :

  • Baudelaire > Mode classique
  • Baudelaire Fleurs > Recherche globale
  • Fleurs 2022 > Recherche globale
  • "Les fleurs du mal" > Mode classique

Mode classique

La recherche porte sur chaque champ de manière individuelle (comme s'il y avait un OU entre chaque champ).

Mode recherche globale

L'expression recherchée est découpée mot à mot. Chaque mot fait l'objet d'une recherche, en utilisant chacun des champs désignés dans la requête (de toutes les lignes de la requête si le paramètre &field_all=on est présent dans l'url, de la première ligne de la requête uniquement sinon) et les opérateurs de recherche sont cumulés. La date est toujours traitée à part.

Les ensembles ramenés pour chaque mot sont croisés (intersection). Ce qui revient à combiner les résultats trouvés pour chaque mot avec un "ET". En d'autres termes, "Baudelaire Fleurs" revient à faire remonter tous les documents qui contiennent à la fois "Baudelaire" dans au moins un des champs sur lesquels porte la recherche, et "Fleurs"  dans un moins un des champs sur lesquels porte la recherche.

Une recherche "full text" mot à mot peut être ainsi effectuée si Texte intégral (ou Contenu) fait partie des critères.

Cas particulier du Texte intégral (module Document engine)

Les opérateurs proposés par le moteur de recherche en texte intégral sont plus "riches" (exemple : élargissement aux expressions équivalentes, proximités, lemmatisation). Pour les exploiter, une recherche "full text" sur l'expression recherchée est exécutée  sur le Texte intégral. Le résultat de cette recherche est ajouté au résultat du mot à mot précédemment décrit.

Texte intégral ou Contenu ?

Une recherche sur le critère Texte intégral porte toujours sur les pièces jointes indexées en texte intégral par KDE (Kentika Document Engine).

Lorsque la zone de contenu (9990) fait partie des métadonnées indexées en texte intégral dans le paramétrage de KDE (à partir de la version 2), le critère Contenu dans les recherche porte sur les métadonnées indexées en texte intégral, dont la zone de contenu donc.

A noter :

  • Si le paramètre SiC6 a la valeur "FR", lors de l'interprétation de la recherche en texte intégral, les opérateurs de combinaison seront remplacés par les opérateurs anglais (ET -> AND ; OU -> OR ; SAUF -> NOT) pour être correctement interprétés par par le moteur de recherche en texte intégral ou full text (Lucene)

  • La casse est prise en compte

  • Seul le premier opérateur "full text" rencontré dans une ligne est pris en compte : y faire attention, surtout lorsque l’on fait des modifications sur la requête. En effet, des paramètres seraient conservés dans une ligne ayant précédemment porté sur le Texte intégral.

Pour aller plus loin

La pertinence & le scoring

Il est utile de paramétrer la pertinence pour faire remonter les enregistrements plus pertinents en premier.

Côté technique : options des URLs

La recherche globale ne passe pas nécessairement par un champ de recherche. Il est possible de passer les paramètres nécessaires pour simuler cette recherche directement dans l'URL. Les paramètres à passer sont :

  • list : la valeur doit être "table"
  • table : numéro de la table sur laquelle porte la recherche (ex : "3" pour les documents)
  • what : valeur recherchée
  • global : la valeur doit être "on" pour utiliser le mécanisme décrit dans cette page
  • field_all : si la valeur est "on", la recherche porte sur toutes les lignes de la requête. Sinon, elle ne porte que sur les champs de la première ligne

Exemple : ListRecord.htm?list=table&global=on&table=3&field_all=on&what=maRechercheIci

Les paramètres optionnels ci-dessous permettent d'affiner la recherche :

  • idinlist : doit contenir l'identifiant de la liste actuelle, pour recherche dans les résultats affichés. Dans ce cas, le paramètre table doit également être négatif ("-3" pour rechercher dans la liste de documents courante).
  • fields : peut être utilisé si le paramètre global n'est pas utilisé. Le paramètre fields permet alors d'indiquer les champs sur lesquels doit porter la recherche. Par exemple : "fields==21;=131;$0332" permet de définir une recherche sur les champs titre, commentaire et record_num.

Note : si l'URL ne contient ni &global=on ni de paramètre field, on utilise alors les champs par défaut spécifiés dans le paramètre S_03, exemple : 21;131 pour titre et commentaire en recherche sur la table n°3 (documents)

  • oper : exemple : &oper=a;p

Note : si l'URL ne contient ni &global=on ni de paramètre oper, on utilise alors les opérateurs par défaut, spécifiés dans le paramètre W_Rz (déclinaison possible par utilisateur). 
ils s'appliquent à tous les champs
la valeur par défaut du paramètre est ;*;a;n;p;=;
si l'expression recherchée est encadrée par des ", l'opérateur x2 (contient l'expression) est ajouté aux opérateurs.

Enfin, les paramètres suivants sont utilisés de manière plus générale sur les listes :

  • liblist : permet de définir manuellement le titre qui sera affiché sur la liste
  • liblist2 : permet de définir manuellement le sous-titre qui sera affiché sur la liste. Uniquement pris en compte si liblist est défini
  • log : avec la valeur "off", ce paramètre permet de ne pas enregistrer de log de recherche dans la base pour la recherche en question
  • cxfilter : avec la valeur "off", permet de chercher dans tous les espaces de la base, et pas seulement dans l'espace courant.
  • modelist : permet de définir le mode d'affichage de la liste (index, détaillée, tableau, diapos...). Attention, ce paramètre change le mode d'affichage pour l'utilisateur courant pour toutes les listes de la même table par la suite.