# Recherche générale

# Introduction

Le module optionnel "fullsearch" fourni un mécanisme permettant de configurer des recherches simples à utiliser pour l'utilisateur.

Le principe d'utilisation est le suivant : à partir d'une suite de termes, une recherche est effectuée sur un sous-ensemble de Smart Elements. Le résultat est l'ensemble des Smart-Element contenant les termes recherchés dans le sous-ensemble.

Le sous-ensemble de Smart Elements où la recherche est effectuée s'appelle un Domaine de recherche.

Ce module fourni les fonctions suivantes:

  1. Un mécanisme de configuration des Domaines de recherches
  2. Une interface d'administration des Domaines de recherches
  3. Une interface de développement des Domaines de recherches
  4. Une api REST de recherche sur un domaine de recherche
  5. Une api PHP
    1. de recherche sur un domaine de recherche
    2. de mise en évidence des termes recherchés
    3. d'indexation des valeurs de recherche
    4. d'administration des domaines de recherche
  6. Des éléments d'interface permettant l'intégration avec le composant Search Criteria pour ajouter le filtre sur un domaine dédié.

# Principe d'indexation des données de recherche

Lorsqu'un domaine de recherche est ajouté, un espace de donnée dédié est créé afin de contenir l'ensemble des termes à rechercher. Ces termes sont issues des valeurs affichées des Smart Elements. Une fois cet espace constitué, le filtre de recherche générale cherchera parmi les données de cet espace et non dans les données directement liées aux Smart Elements.

# Indexation à intervalle régulier

A l'installation du module, une tâche programmée lance l'indexation des données de recherche qui nécessite une mise à jour. Cette tâche est programmée pour être exécutée toutes 30min (à 5 et 35 min de chaque heure). Cette tâche est identifiée par le nom logique FULLSEARCH_UPDATE_TASK.

# Indexation manuelle

L'api PHP permet de contrôler l'indexation de manière plus précise. Pour une prise en compte immédiate, il est possible de programmer cette indexation sur le postStore du SmartElement.

# Syntaxe des termes recherchés

La recherche se base sur la recherche plein texte fournie par PostgreSql. Le principe de base est de filtrer tous les Smart Elements qui contiennent les termes indiqués dans le texte recherché.

Les notations suivantes sont supportés (exemple en Français pour le système de règles de parsing (stemmer) simple).

  1. Un texte sans guillemets (") : Les termes saisis sont interprétés comme une suite de "ET" où chacun des termes recherchés doit être présent dans les résultats (dans n'importe quel ordre).
    Exemple:

    jardin château => recherche les Smart Elements contenant les mots jardin(s) et château(x).

  2. Un texte entre guillemets ("): Les termes saisis sont interprétés comme une suite de mots (l'ordre est respecté).
    L'utilisation des guillemets requiert une saisie d'au moins deux mots.
    Exemple:

    "jardin château" => recherche les Smart Elements dans lesquels les mots jardin(s) et château(x) se succèdent.

  3. Le mot clé or entre deux termes permet de rechercher un mot ou un autre.
    L'opérateur peut être utilisé avec autant de mots que souhaité.
    Exemple:

    jardin or château => recherche les Smart Elements contenant jardin(s) ou château(x).
    jardin or château or fontaine => recherche les Smarts Elements contenant jardin(s) ou château(x) ou > fontaine(s).

Attention

Une recherche du mot clé or dans une saisie entre guillemets effectuera une recherche sur la succession de tous les mots y compris le mot clé.
Exemple: la recherche de "jardin or château" retournera les Smart Elements dans lesquels les mots jardin(s) , or et château(x) se succédent.

Attention

Une recherche utilisant le mot clé or doit contenir au moins 2 termes. Dans le cas contraire, la recherche effectuée est une recherche de termes sans guillemets. Exemple: la recherche or château retourne les Smart Elements contenant les mots or et château(x).

  1. Le caractère - permet d'exclure certains mot des résultats de la recherche.
    Ce caractère doit précédé le mot sans espace.
    Exemple:

    jardin -château => recherche les Smart Elements contenant le mot jardin(s) sans château(x).

  2. Le caractère * permet d'indiquer que le mot recherché commence par.
    Ce caractère doit succéder le mot recherché sans espace.
    Exemple:

    jardin chat* => recherche les Smart Elements contenant le mot jardin(s) et tout les mots commençant par > chat (ex: chat(s), château(x), chatelet(s), chateaubriand(s), etc...).